对象定义:无序属性的集合,其属性能够包含基本值、对象或函数
对象就是 键值对 其中值能够是数据和函数
对象方法就是对象的属性 不过这个属性是函数函数
var p = new Object() p.name = 'nike' p.age = '10' p.job = 'joker' p.sayName = function() { console.log(this.name) } console.log(p.age)//10 p.sayName() //nike
var p = { name: 'nike', age: '10', job: 'joker', sayName: function(){ console.log(this.name) } } console.log(p.job)//joker p.sayName() //nike
Configurable:表示可否经过 delete 删除属性从而从新定义属性,可否修改属性的特
性,或者可否把属性修改成访问器属性。像前面例子中那样直接在对象上定义的属性,它们的这个特性默认值为 true。
Enumerable:表示可否经过 for-in 循环返回属性。像前面例子中那样直接在对象上定
义的属性,它们的这个特性默认值为 true。
Writable:表示可否修改属性的值。像前面例子中那样直接在对象上定义的属性,它们的
这个特性默认值为 true。
Value:包含这个属性的数据值。读取属性值的时候,从这个位置读;写入属性值的时候,把新值保存在这个位置。这个特性的默认值为 undefined。
修改这 3 个值须要用 es5 的Object.defineProperty()方法this
这个方法接收 3 个参数:属性所在的对象、属性的名字、描述符对象es5
描述符对象的属性必须是:configurable enumerable writeble valuecode
var person = {} Object.defineProperty(person, 'name', { writable: true, value: 'nike' }) console.log(person.name)//nike person.name = 'gray' console.log(person.name)//gray
var person = {} Object.defineProperty(person, 'name', { configurable: true, value: 'nike' }) console.log(person.name)//nike delete person.name console.log(person.name)//undefined
Configurable:表示可否经过 delete 删除属性从而从新定义属性,可否修改属性的特性,或者可否把属性修改成数据属性。对于直接在对象上定义的属性,这个特性的默认值为true
Enumerable:表示可否经过 for-in 循环返回属性。对于直接在对象上定义的属性,这个特性的默认值为 true。
Get:在读取属性时调用的函数。默认值为 undefined。
Set:在写入属性时调用的函数。默认值为 undefined对象
var person = { oldname: 'jac', age: '10' } Object.defineProperty(person, 'newname', { get: function(){ return this.oldname }, set: function(value){ this.oldname = value } }) person.newname = 'bool' console.log(person.oldname)//bool //设置一个属性的值会致使其余属性的变化
var person = { name: 'handsome' } Object.defineProperties(person, { boy: { get: function () { return this.name + ' hua' }, set: function (value) { return this.name = value } }, man: { get: function () { return this.name }, set: function (value) { return this.name = value } }, year: { value: 20 } }) console.log(person.boy)//handsome hua console.log(person.man)//handsome //若是person的name有值,就不要对name再设置 get set var descriptor = Object.getOwnPropertyDescriptor(person, "year") //属性所在的对象、要读取其描述符的属性名称 console.log(descriptor.value)//20