首页 > 其他 > 详细

面向对象 part2

时间:2019-11-15 20:36:43      阅读:99      评论:0      收藏:0      [点我收藏+]

6.1.1理解对象

创建自定义对象最简单的方式就是创建一个object实例。然后添加方法和实例

var person = new Object()
person.name = "hi"
person.sayName = function() {
alert(this.name)

对象字面量(创建方式)

var person = {
     name: "hi",
     sayName: function() {
     alert()
    } 
}

6.1.2 属性类型

为了实现js引擎。es定义了只有内部才用的特性(不能直接访问)。描述了属性

es有两种属性:数据属性和访问器属性

1数据属性

数据属性包含一个数据值的位置/ 这个位置可以读取和写入值。数据属性有四个描述其行为的特性

  • [[Configurable]] 表示---能否通过delete删除属性从而重新定义属性
                             ---能否修改属性的特性
                                 ---能否把属性修改为访问器属性
    总结:像前面那种直接在对象上定义属性。他们的这个特性值都是true(说明default是true)
  • [[Enumerable]]         --- 能否被for in 返回属性
    总结:像前面那种直接在对象上定义属性。他们的这个特性值都是true(说明default是true)
  • [[Writable]]              ---能否修改属性的值
    总结:像前面那种直接在对象上定义属性。他们的这个特性值都是true(说明default是true)

  • [[Value]] 包含这个属性的数据值。读取这个属性值的时候,从这个位置读。写入时候,把
    新值保存在这个位置。这个特性的默认值是undefined

像前面那种直接在对象上定义属性,它们的前三项特性都是true。最后一项被设置为指定的值。

var person = {
    name:"hi"
}
//这里创建了一个名为name的属性,为它指定的值是“hi”,也就是说[[Value]]特性将被设置为“hi”,而对这个值的任何修改都会反应在这个位置

要修改属性的默认的特性。需要用到Object.defineProperty()方法//同时也可以这样创建一个属性

//作为创建一个新的属性,如果不特别指定。configurable,enumerable,writable都默认为false。

//当configurable设置为false的时候,就不能再变回来。只能修改writable属性(当writable为true的时候)

//也就是说该属性的这四个特性都不能被更改了(除了writable,但是当writable被设置为false后也不可以更改)

//当configurable设置为true的时候,其他属性可以被任意修改

 

它接受三个参数(属性所在的对象,属性的名字,一个描述符对象)。描述符对象的属性必须是那四个。设置一个或者多个值

可以修改对应的特性值。

var person = {}
Object.defineProperty(person, "name", {
    writeable: false
    value:"hi"
})
alert(person.name)  // "hi"
person.name = "bye"
alert(person.name) // "hi"

 

面向对象 part2

原文:https://www.cnblogs.com/-constructor/p/11869102.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!