admin管理员组

文章数量:1289879

is this possible?

My thinking: Prototypes are essentially attributes of the Constructor function (whether native Constructor such as Function, String or Object, or your own custom Constructor) and only the 'new' keyword is able to leverage the Constructor and its prototype for object creation

Am I missing something?

is this possible?

My thinking: Prototypes are essentially attributes of the Constructor function (whether native Constructor such as Function, String or Object, or your own custom Constructor) and only the 'new' keyword is able to leverage the Constructor and its prototype for object creation

Am I missing something?

Share Improve this question asked Feb 9, 2010 at 17:16 plodderplodder 2,30618 silver badges19 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 12

You are right, but now in the ECMAScript 5th Edition, the Object.create method is able to create object instances using another objects as a prototype:

var proto = {foo: 1};
var obj = Object.create(proto);

In the above example, obj will be created and it will contain a reference to proto in the [[Prototype]] internal property, and:

obj.foo; // 1
obj.hasOwnProperty('foo'); // false

This method is from the new specification approved on December 2009, as far I've seen now is available on the Mozilla JavaScript 1.9.3 implementation.

For now you can mimic the behavior of that method by this, as proposed by Douglas Crockford:

if (typeof Object.create !== 'function') {
  Object.create = function (o) {
    function F() {}
    F.prototype = o;
    return new F();
  };
}

本文标签: JavaScript Creating objects based on a prototype without using newConstructorStack Overflow