gpt4 book ai didi

javascript - 为什么这个 Javascript 原型(prototype)没有被覆盖

转载 作者:行者123 更新时间:2023-11-28 02:36:28 26 4
gpt4 key购买 nike

我正在看这里的例子 Using apply to chain constructors

我理解除了这一行:

fNewConstr.prototype = fConstructor.prototype;

为什么它是必要的,为什么它不会使它失去刚刚为 fNewConstr 定义的函数?

Function.prototype.construct = function (aArgs) {
var fConstructor = this, fNewConstr = function () { fConstructor.apply(this, aArgs); };
// Why doesn't fNewConstr.prototype get completely overwritten?
fNewConstr.prototype = fConstructor.prototype;
return new fNewConstr();
};



function MyConstructor () {
for (var nProp = 0; nProp < arguments.length; nProp++) {
this["property" + nProp] = arguments[nProp];
}
}

var myArray = [4, "Hello world!", false];
var myInstance = MyConstructor.construct(myArray);

alert(myInstance.property1); // alerts "Hello world!"
alert(myInstance instanceof MyConstructor); // alerts "true"
alert(myInstance.constructor); // alerts "MyConstructor"

最佳答案

如果你的意思是,为什么当你编写时fNewConstr(函数)不会被覆盖

fNewConstr.prototype = ...;

...答案是因为没有任何东西可以覆盖它。该代码只是设置函数的 prototype 属性。

如果您的问题是:为什么每次调用 constructfNewConstr重新创建,答案是:是的。

关于javascript - 为什么这个 Javascript 原型(prototype)没有被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13420198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com