复制原型需要新对象吗?javascript
因此,我正在查看“Elount Javascript”中的一些代码,其中指出,为了实现继承,您可以编写如下函数:复制原型需要新对象吗?javascript,javascript,Javascript,因此,我正在查看“Elount Javascript”中的一些代码,其中指出,为了实现继承,您可以编写如下函数: function clone(object) { function OneShotConstructor() {} OneShotConstructor.prototype = object; return new OneShotConstructor(); } 如果已经定义了一个类Terrarium,那么就这样称呼它: function LifeLikeT
function clone(object) {
function OneShotConstructor() {}
OneShotConstructor.prototype = object;
return new OneShotConstructor();
}
如果已经定义了一个类Terrarium
,那么就这样称呼它:
function LifeLikeTerrarium(plan) {
Terrarium.call(this, plan);
}
LifeLikeTerrarium.prototype = clone(Terrarium.prototype);
LifeLikeTerrarium.prototype.constructor;
所以我的问题是为什么我们需要创建OneShotConstructor
来复制它的原型。为什么我们不能写下这样的东西:
LifeLikeTerrarium.prototype = new Terrarium();
LifeLikeTerrarium.prototype = new Terrarium();
这是否会产生任何问题,是否是不正确的javascript?请参阅Crockford的原型继承: 除了设置原型之外,还需要调用new关键字,该关键字将对象的内部[[prototype]]属性设置为构造函数的外部原型然后执行构造函数,只要提到这个,就使用新对象 这里有一个很好的解释: 在这里:
参见Crockford的原型遗传: 除了设置原型之外,还需要调用new关键字,该关键字将对象的内部[[prototype]]属性设置为构造函数的外部原型然后执行构造函数,只要提到这个,就使用新对象 这里有一个很好的解释: 在这里: 所以我的问题是为什么我们需要在 为了复制它的原型。为什么我们就不能写呢 比如:
LifeLikeTerrarium.prototype = new Terrarium();
LifeLikeTerrarium.prototype = new Terrarium();
这是否会产生任何问题,是否是不正确的javascript
因为调用新的Terrarium()除了克隆对象外,还会调用其构造函数,其后果未知。如果以迂回的方式执行,则可以在不调用构造函数的情况下克隆对象
所以我的问题是为什么我们需要在
为了复制它的原型。为什么我们就不能写呢
比如:
LifeLikeTerrarium.prototype = new Terrarium();
LifeLikeTerrarium.prototype = new Terrarium();
这是否会产生任何问题,是否是不正确的javascript
因为调用新的Terrarium()除了克隆对象外,还会调用其构造函数,其后果未知。如果您以迂回的方式进行操作,则可以克隆对象而不调用构造函数。我还发现了类似的解释:在“和我的最后一个技巧”下。这里的方法称为create,原因似乎是我们不需要为构造函数指定参数,但是为什么克隆/创建让我们绕过了需要提供构造函数参数的问题呢?我在这里也发现了类似的解释:在“和我的最后一个技巧”下。这里的方法叫做create,原因似乎是我们不需要为构造函数指定参数,但是为什么克隆/创建可以帮助我们解决需要提供构造函数参数的问题呢?谢谢。这些链接帮助很大!我不知道是我的Java OOP深入到我的头脑中,还是原型编程的本质让我陷入了一个循环,但我花了一段时间才把所有的东西拼凑起来。谢谢。这些链接帮助很大!我不知道是我的Java OOP深入到我的头脑中,还是原型编程的本质让我陷入了一个循环,但我花了一段时间才把所有的东西拼凑起来。