面向对象
面向对象的语言有一个标志,它们都有类的概念,通过类可以创建任意多的具有相同属性和方法的对象。
什么是对象呢? ECMA-262定义对象为: 无序属性的集合,其属性值可以包括基本值、对象或者函数。
属性类型
定义只有字啊内部采用的特性时,描述了属性的各种特征
为了表示特性是内部值,把它们放在两对方括号中,例如 [[Enumerable]]
ECMAScript包含两种属性: 数据属性 和 访问器属性
数据 属性
[[Configurable]] 表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,
能否把属性修改为访问器属性,默认值为true[[Enumrable]] : 能否 通过for-in循环返回属性, 默认为true
[[Writable]] 表示是否可以修改属性的值,默认为true
[[Value]] 包含属性的数据值 读取从这个位置 读 ;写入,把新值保存在这里 默认为undefined
要修改特性,必须使用Object.defineProperty() 方法
var person = {};
Object.defineProperty(person, 'name', {
writable: false,
value: 'tom'
})
console.log(person.name) // tom
person.name = 'jerry'
console.log(person.name) // tom