码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象 part2

时间:2019-11-15 20:04:21      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:this   方式   设置   strong   删除   style   写入   数据   直接   

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()方法

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

可以修改对应的特性值。

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

 

面向对象 part2

标签:this   方式   设置   strong   删除   style   写入   数据   直接   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!