Web前端
Javascript小tips之Object
Object.create和new xxx()的区别 语法 Object.create(proto, [propertiesObject]) 创建一个新对象,使用现有的对象来提供新创建的对象的__proto__。 参数 proto 新创建对象的原型对象。 propertiesObject 可选。如果没有指定为 undefined,则是要添加到新创建对象的可枚举属性(即其自身定义的属性,而不是其原型链上的枚举属性)对象的属性描述符以及相应的属性名称。这些属性对应Object.defineProperties()的第二个参数。 返回值 一个新对象,带着指定的原型对象和属性。 例外 如果propertiesObject参数不是 null 或一个对象,则抛出一个 TypeError 异常。 var F = function () {}; F.prototype = o; return new F(); }; new Base() new 构造函数() 实际上执行的是: var obj = new Object(); obj.[[Prototype]] = Base.prototype; Base.call(obj) 原型链的理解 在JavaScript中,一共有两种类型的值,原始值和对象值.每个对象都有一个内部属性[[prototype]],我们通常称之为原型.原型的值可以是一个对象,也可以是null.如果它的值是一个对象,则这个对象也一定有自己的原型.这样就形成了一条线性的链,我们称之为原型链。 访问一个对象的原型可以使用ES5中的Object.getPrototypeOf方法,或者ES6中的proto属性. Read more…