旧对象作为原型

xra*_*alf 5 javascript prototype-programming

我正在读本书,有一章关于原型,有这个难以理解的段落和代码片段.

创建新对象时,可以选择应该是其原型的对象.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);
Run Code Online (Sandbox Code Playgroud)

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

dou*_*uwe 2

如果你这样做:

Object.beget(oldObject);
Run Code Online (Sandbox Code Playgroud)

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

var F = function(){};
Run Code Online (Sandbox Code Playgroud)

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

F.prototype = o;
return new F();
Run Code Online (Sandbox Code Playgroud)

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