旧对象作为原型

时间:2011-09-09 11:33:53

标签: javascript prototype-programming

我正在阅读this本书,有一章关于原型的章节和代码片段很难理解。

  

创建新对象时,可以选择应该是的对象   它的原型。 JavaScript提供的机制是   凌乱而复杂,但可以大大简化。我们将补充   Object函数的beget方法。 beget方法创建一个新的   使用旧对象作为其原型的对象。

if (typeof Object.beget !== 'function') {
     Object.beget = function (o) {
         var F = function () {};
         F.prototype = o;
         return new F();
     };
}
var another_stooge = Object.beget(stooge);

请您解释一下这段代码,为什么这么好?等等?您会建议哪种资源来研究原型?这是非常困难的。

2 个答案:

答案 0 :(得分:2)

如果你这样做:

Object.beget(oldObject);

旧对象是传递给函数的o。接下来是创建新对象。这种情况发生在:

var F = function(){};

这创建了新的函数F,大写只是为了表明它应该是一个应该用new调用的类。 接下来,旧对象设置此类的原型,并返回F的新实例。

F.prototype = o;
return new F();

你应该意识到,在JavaScript(没有类)中,对象只是函数的实例。

答案 1 :(得分:1)

我总是发现JavaScript上的MDN文档很有启发性,对我而言,这个文档很好地涵盖了原型:https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Details_of_the_Object_Model