我在构造函数的原型中有一个函数:
function Animal(name) {
this.name = name
}
Animal.prototype.generateToys = function(numberOfToys) {
if(numberOfToys == 1) {
this.createToys();
}
else {
this.createToys();
}
}
仍然需要声明createToys
。这就是我的问题指向的地方。假设generateToys
是唯一可以调用createToys()
的方法,最好在方法createToys
中创建generateToys
,如下所示:
function Animal(name) {
this.name = name
}
Animal.prototype.generateToys = function(numberOfToys) {
if(numberOfToys == 1) {
this.createToys();
}
else {
this.createToys();
}
function createToys() {
...
...
...
}
}
或者您会将其创建为方法(原型),如下所示:
Animal.prototype.createToys = function() {
...
...
...
}
什么会更好,为什么? :)
答案 0 :(得分:1)
如果将其放在generateToys()
方法中,则每次调用该方法时都会重新声明它,然后在方法完成时从范围中删除。大多数情况下,这不是您想要的,所以您更愿意将其创建为单独的方法。
答案 1 :(得分:1)
这取决于您的架构。
如果你计划有很多Animal
的实例,那么将你的方法添加到原型是更好的,否则你将创建许多私有函数,这是昂贵的(在性能方面)。
答案 2 :(得分:1)
声明原型中的函数限制了该范围之外的可见性,并导致每次调用Animal.prototype.generateToys()
时都声明函数(浪费内存)
Animal.prototype.generateToys = function(numberOfToys) {
var createToys = function createToys() {
}
})
在原型上声明它意味着你的每个实例都可以直接调用它,你在内存中只有一个声明,因为原型本身就是你所有实例共享的一个引用。