首页 > 代码库 > ECMAScript 5 新增 Object 接口
ECMAScript 5 新增 Object 接口
对象 | 构造器 | 说明 |
---|---|---|
Object | getPrototypeOf | 返回对象的原型 |
Object | getOwnPropertyDescriptor | 返回对象自有属性的属性描述符 |
Object | getOwnPropertyNames | 返回一个数组,包括对象所有自有属性名称集合(包括不可枚举的属性) |
Object | create | 创建一个拥有置顶原型和若干个指定属性的对象 |
Object | defineProperty | 给对象定义一个新属性,或者修改已有的属性,并返回 |
Object | defineProperties | 在一个对象上添加或修改一个或者多个自有属性,并返回该对象 |
Object | seal | 锁定对象。阻止修改现有属性的特性,并阻止添加新属性。但是可以修改已有属性的值。 |
Object | freeze | 冻结对象,阻止对对象的一切操作。冻结对象将永远不可变。 |
Object | preventExtensions | 让一个对象变的不可扩展,也就是永远不能再添加新的属性。 |
Object | isSealed | 判断对象是否被锁定 |
Object | isFrozen | 判断对象是否被冻结 |
Object | isExtensible | 判断对象是否可以被扩展 |
Object | keys | 返回一个由给定对象的所有可枚举自身属性的属性名组成的数组 |
这些新增的好处之一是对象的属性有了更多控制,例如哪些是允许被修改的,哪些是可以枚举的,哪些是可以删除的等。这个的实现通过程序访问对象的属性描述符(property descriptors). 例如:
var cat = {};Object.defineProperty(cat, "name", { value: "Maru", writable: false, enumerable: true, configurable: false});Object.defineProperty(cat, "skill", { value: "exploring boxes", writable: true, enumerable: true, configurable: true});
1.getPrototypeOf 例子
2.Object.create(proto [, propertiesObject ]) 是E5中提出的一种新的对象创建方式,第一个参数是要继承的原型,如果不是一个子函数,可以传一个null,第二个参数是对象的属性描述符,这个参数是可选的。
例子1
function Car (desc) { this.desc = desc; this.color = "red";} Car.prototype = { getInfo: function() { return ‘A ‘ + this.color + ‘ ‘ + this.desc + ‘.‘; }};//instantiate object using the constructor functionvar car = Object.create(Car.prototype);car.color = "blue";alert(car.getInfo());
例子2
var a = {a: 1}; // a ---> Object.prototype ---> nullvar b = Object.create(a);// b ---> a ---> Object.prototype ---> nullconsole.log(b.a); // 1 (继承而来)var c = Object.create(b);// c ---> b ---> a ---> Object.prototype ---> nullvar d = Object.create(null);// d ---> nullconsole.log(d.hasOwnProperty);
new和Object.create()的区别在哪:
function Constructor(){}o = new Constructor();// 上面的一句就相当于:o = Object.create(Constructor.prototype);
ECMAScript 5 新增 Object 接口
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。