我在構造函數的原型功能:JavaScript的最佳實踐原型
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() {
...
...
...
}
什麼會更好,爲什麼? :)
取決於。你想讓你的對象的任何實例都可以直接訪問createToys嗎?或者你想讓他們通過generateToys?既然你有一個if裏面generateToys,我猜你希望他們總是通過generateToys,所以這個函數應該是私人的 – yBrodsky
最好的解決方案是工作。你的第一個建議不會讓'createToys'成爲實例的一個屬性,所以調用'this.createToys()'將失敗(即它不起作用)。但即使你修正了這個問題,爲什麼每次調用generateToys時都必須重新創建'createToys'?這似乎沒有必要(至少在你的例子中)。定義一次函數。你做什麼('prototype',「class」之外的功能)並不重要。 –
我建議你看一看Douglas Crockford,Function The Ultimate(https://www.youtube.com/watch?v=ya4UHuXNygM)的演講,它展示了創建對象的各種方法? – Booster2ooo