js对象的理解
一. 如何理解js中的对象
1.抽象的角度:针对现实中的具体事物的一种抽象。
2.数据的角度:将无需的变量集合在一起。
二. 对象的特性:通过设置Object的defineProperty方法实现
Object.defineProperty(param1,param2,param3)param1需要定义属性的对象。param2需被定义或修改的属性名。param3
需被定义或修改的属性的描述符。
1.可配置性:configurable(true/false)默认值为true,表明属性是否可删除
var person = { name: "zhangsan", age: 21, sayName: function() { console.log(this.name); } }; Object.defineProperty(person, "name", { configurable: false });
false表示不能删除,所以依然能够打印出zhangsan
打印结果为:zhangsan,21
2.枚举性:enumerable(true/false)默认值为true,表明属性的可访问性
var person = { name: "zhangsan", age: 21, sayName: function() { console.log(this.name); } }; Object.defineProperty(person, "name", { enumerable: false }); for(var attr in person) { console.log(attr + ":" + person[attr]); }
false表示不能访问到person对象的name属性,所以控制台打印不出person的name
打印结果为:
age:21
sayName:function () {
console.log(this.name);
}
3.可修改:writable(true/false)默认值为true,表明属性的可修改性
var person = { name: "zhangsan", age: 21, sayName: function() { console.log(this.name); } }; Object.defineProperty(person, "name", { writable: false }); person.name = "lis"; console.log(person.name);
false表示不能修改,所以打印结果还是zhangsan,如果是true或者不设置,打印结果就是lis,21
打印结果为:zhangsan,21