对象除了包含属性外,还拥有三个相关的对象特性:
1.对象的原型(prototype):指向另外一个对象,本对象的属性继承自它的原型对象。
2.对象的类(class):是一个标识对象类型的字符串。
3.对象的扩展标记(extensible flag):指明是否可以向该对象添加新属性。
对象的等于操作是将对象的地址复制给对方,属于浅拷贝
克隆对象:
1 Function.prototype.clone = function(o){ // 对象克隆方法 2 function Temp(){};//新建空构造函数 3 Temp.prototype = o;//把参数对象赋值给该构造函数的原型对象 4 return new Temp();//返回实例化后的对象 5 }
对象属性的特性:
1.可写(writable attribute)是否可以设置该属性的值
2.可枚举(enumerable attribute)是否可以通过for/in循环返回该属性
3.可配置(configurable attribute)表明是否可以删除或修改该属性
删除属性: delete运算符可以删除对象属性,删除对象属性后,不是将该属性值设置为undefined,而是从对象中彻底清除属性。
对象内部都包含一个this关键字,它总是引用调用该方法的对象。
配置特性:
Object.seal(object): 阻止修改现有属性的特性,并阻止添加新属性。但对属性不进行保护。
Object.freeze(object):阻止修改现有属性的特性和值,并阻止添加新属性。
Object.preventExtensions(object):阻止添加新属性。