gpt4 book ai didi

JavaScript:将原型(prototype)函数放在哪里

转载 作者:行者123 更新时间:2023-11-29 09:55:49 24 4
gpt4 key购买 nike

我想知道这两种方法有什么区别。它们都有效,但我不明白第二种方法是否会产生不良影响?

// A. Putting a prototype method outside the function declaration (what I would normally do)
var Cat = function(){
}

Cat.prototype.eat = function(){
// implementation
}

// B. Putting a prototype method inside the function declaration (it works too but the scoping seems different)
var Cat = function(){

Cat.prototype.eat = function(){
// implementation
}
}

最佳答案

您可能想做第一个例子。两者都在做完全相同的事情,尽管从技术上讲,第二个函数可以访问 Cat 的“私有(private)”变量。但是,如果您想这样做,正确的方法是使用 this:

var Cat = function(){
var a = 'hi';

this.eat = function() {
alert(a); // Exists!
}
}

请记住,对于上面的示例,或者对于您原来的“B”示例,直到您使用 new Cat() 实例化一个新的 Cat 时,eat 函数才会存在。意思是,如果您只想在函数本身上调用 Cat.eat(),就像实用方法一样,那么使用 prototype 的第一个示例就是要走的路。

关于JavaScript:将原型(prototype)函数放在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11841259/

24 4 0