前面的话。
作为一只典型的前端菜鸟,看js高级程序设计的第6章有点艰难。所以用写博客的办法,一边看书一边把自己理解的东西用自己的话总结出来。如果有错误或者歧义的地方,还请指出并包涵。
1.什么是对象?
js中的对象,分为两种形式。举个栗子:
1 //No.1 2 3 var dog = new Object(); 4 dog.name = "lucky"; 5 dog.age = 1; 6 dog.sex = "girl"; 7 8 dog.sayHello = function(){ 9 alert(this.name+"wangwang~"); 10 } 11 12 //No.2 13 14 var dog={ 15 name:"lucky", 16 age:1, 17 sex:"girl", 18 sayHello:function(){ 19 alert(this.name+"wangwang~"); 20 }}
2.属性的类型
对象的属性有自己的特性([[Configurable]]是否能删除或者重新定义属性、[[Enumerable]]是否能通过for循环、[[Writable]]能否改变属性值、[[Value]]属性的数据值),这些特性是实现js引擎用的,在js代码中是无法直接访问。格式特殊。用 " [[]] " 来标识。
默认:前三个设置都为true,[[Value]]默认为当前的属性的值。
改变属性特性。用Object.defineProperty(对象名称,"属性名称",{属性特性:对应值});
举个栗子:
var dog = {}; Object.defindProperty( dog, "name", { writable:false,//不可改 value:"lucky" //configurable,enumerable,writable,value }) ; alert(dog.name); //lucky dog.name="lala"; alert(dog.name); //lucky
注意:如果改变configurable的值为false,会报错。