这可能吗?
我的想法:原型本质上是构造函数的属性(无论是本地构造函数,如函数,String或Object,还是您自己的自定义构造函数),只有“new”关键字能够利用构造函数及其原型来创建对象
我错过了什么吗?
解决方法
您是对的,但现在在ECMAScript第5版中,Object.create方法能够使用另一个对象作为原型创建对象实例:
var proto = {foo: 1}; var obj = Object.create(proto);
在上面的例子中,将创建obj,它将包含对[[Prototype]]内部属性中的proto的引用,并且:
obj.foo; // 1 obj.hasOwnProperty('foo'); // false
这种方法来自于2009年12月批准的新规范,目前我已经看到,现在可以在Mozilla JavaScript 1.9.3实现.
现在你可以模仿这种方法的行为,正如Douglas Crockford提出的那样:
if (typeof Object.create !== 'function') { Object.create = function (o) { function F() {} F.prototype = o; return new F(); }; }