gpt4 book ai didi

javascript - 将原型(prototype)应用于非构造函数的效果是什么?

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

所以,我知道如何应用原型(prototype)属性来修改将有效影响实例的构造函数。理论上,原型(prototype)也应该适用于普通函数(尽管如果它不是某个实例的原型(prototype),则不一定有效果)。所以我尝试了代码(createNewFunction是一个普通函数,不是构造函数)(完整代码在最后)

createNewPerson.prototype.xx = (function() { //alerts hello
alert("hello");
})();

我想知道这实际上是如何将 xx 附加到函数中的。它是否存储为等于 anon 函数的变量 xx?或者存储为 this.xx = 函数?这与存储以下代码相比如何:

createNewPerson.xx = (function() { //alerts hello
alert("hello");
})();

这也让我想知道这一行将如何存储(就像它是否存储为 var mm = 3,或者根本不会追加?):

createNewPerson.mm = 3;

完整代码供引用:

function createNewPerson(name) {
var obj = {};
obj.name = name;
obj.greeting = function() {
alert('Hi! I\'m ' + this.name + '.');
};
return obj;
}

createNewPerson.mm = 3; //does nothing when i tested it

createNewPerson.xx = (function() { //alerts hello
alert("hello");
})();
createNewPerson.prototype.xx = (function() { //alerts hello
alert("hello");
})();
var salva = createNewPerson('Salva');

最佳答案

.prototype 只是一个与其他属性一样的对象属性。函数默认有一个,当您以某些方式(例如通过使用构造函数)创建对象时,可以通过特殊方式间接访问该 .prototype 属性。但属性本身或为其分配东西并没有什么神奇之处。

createNewPerson.prototype.xx = (function() { //alerts hello
alert("hello");
})();

这会发出“hello”警报,并将值 undefined 分配给 .prototype 属性的 .xx 属性。

Is it stored as variable xx that is equal to the anon function?

它存储为属性xx,等于undefined

createNewPerson.xx = (function() { //alerts hello
alert("hello");
})();

这会发出“hello”警报,并将值 undefined 分配给函数本身的 .xx 属性。

This also makes me wonder as to how this this line will be stored(As in if it will be stored as var mm = 3, or it won't append at all?):

createNewPerson.mm = 3;

我不太明白你说的是什么,但它所做的只是将值 3 分配给函数本身的 .mm 属性。

关于javascript - 将原型(prototype)应用于非构造函数的效果是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47271155/

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