第六章 面向对象程序设计(1.理解对象)

  ·   JS高设(第三版)   ·   JavaScript     浏览量:

之前介绍过了,懒得写了,不理解别看

属性类型

他们是只有内部才使用的特性,为了实现JS引擎用的,不能直接访问,用[[]]表示
ES中有两种属性:数据属性和访问器属性

1.数据属性

  • [[Configurable]]:默认true,能否通过delete删除属性从而重新定义属性,能否修改属性的特性,能否把属性修改为访问器属性(下面介绍)
  • [[Enumberable]]:默认true,能否通过for-in循环返回属性
  • [[Writable]]:默认true,能否修改属性值
  • [[Value]]:默认undefined,包含这个属性的数据值,从这个位置进行读写数据
var person = {
    name: "尼古拉斯·赵四";
}

上面的[[Configurable]]、[[Enumberable]]、[[Writable]]都为true,name属性的[[Value]]被设置为尼古拉斯·赵四,对这个值的任何修改都将反映在这个位置

使用Object.definedProperty(),修改属性默认特性,接收参数为:属性所在的对象,属性名称和一个描述符对象,描述符必须是以上列举四个,可同时修改多个。
1

多数情况没有必要利用这些高级功能!

2.访问器属性

访问器属性不包含数据值,只有一对getter和setter(不是必须的)
在读取访问器属性时调用getter,写入调用setter
访问器属性有以下四个特性

  • [[Configurable]]:默认true,能否通过delete删除属性从而重新定于属性,能否修改属性特性,能否把属性修改为数据属性
  • [[Enumberable]]:默认true,能否通过for-in循环返回属性
  • [[Get]]:默认undefined,读取时调用的函数
  • [[Set]]:默认undefined,写入时调用的函数

必须使用Object.defined()来定义
timjie-tu-20181015105017

简单一句话,修改了属性本身的读取方法,配置过的你就改不了了。

定义多个属性

Object.definedPeoperties,变y为i+es,英语讲过
2

读取属性的特点

Object.getOwnPropertyDescriptor(),可以取得给定属性的描述符
两个参数,属性所在对象,属性名称
返回值,一个对象
3



收起 >>
第六章 面向对象程序设计(1.理解对象)