创建对象、原型链

1.属性可以动态添加或删除(如:object.a="";object.b="")

2.prototype是对象的一个属性,当new一个对象时,赋给prototype的值就会被找到(如果没有会继续查找上一级,直到再也找不到为止,即查找原型链),例:

 

属性操作

1.获取对象中的值,可以用key(如:object["x"+1],多用于拼接访问object中x1,x2,x3等值),也可以直接用object.x来进行操作(无需拼接)

2.遍历取值:for(p in obj){ obj[p]; }(顺序不确定,会带着原型链上的属性)

3.运算符&使用:var yz = obj&&obj.y&&obj.y.z(如果obj是undefined则返回undefined,直到如果obj.y.z都存在,会返回z的值。注意顺序,如果顺序有误,如obj本身不存在,却要取obj.y,就会报错)

4.删除属性delete obj.z/delete obj["z"](返回true),重复删除已删除的属性,还会返回true(delete的方法不会影响原型的属性,只影响当前的属性)

5.delete Object.prototype会返回false,不允许删除

6.var定义的全局或局部变量都不能被删除,会返回false(函数也同理)

7.检测属性是否存在的方法:in。如:

var cat = new Object;
cat.legs=4;
'legs' in cat;//返回true
'abc' in cat;//返回false

8.hasOwnProperty用来检测当前定义的变量的属性,比如:

cat.hasOwnProperty('legs');//返回true
cat.hasOwnProperty('toString');//返回false(因为tostring是继承Object原型链上的属性,不能被取到)

9.严格不等于符号:!==

 

get/set方法

1.举例

var man = {
  name:'Bosn',
  weibo:'@Bosn',
  get age(){
    return new Date().getFullYear()-1988;
  },
  set age(val){
    console.log('Age can\'t be set to'+val);
  }
}
//访问man
console.log(man.age);//28
man.age = 100;//Age can't be set to 100
console.log(man.age);//27

2.在原型上添加configurable:true,可以使里面的值变为可配置(也可以删除)

 

 属性标签

1.属性标签的定义

Object.defineProperty(person,'name',{
    configurable:false,
    writable:false,
    enumerable:true,
    value:"Bosn Ma"
});
//调用
person.name;//Bosn Ma
person.name=1;
person.name;//still Bosn Ma
delete person.name;//false

2.属性值与修改等之间的关联

 

对象标签、对象序列化(略)