可能重複的原型功能之間的區別:
Use of ‘prototype’ vs. ‘this’ in Javascript?
Defining prototype methods inside the constructor是什麼內部或「類」的定義之外
是有這兩個定義之間有什麼區別?
function Task(description, value) {
this.id = 0;
this.subId = 0;
this.parent = null;
this.children = new Array();
this.description = description;
this.value = value;
Task.prototype.getNextId = function() {
return this.subId++;
},
Task.prototype.addTask = function (task) {
task.id = this.getNextId();
this.children[task.id] = task;
task.parent = this;
},
Task.prototype.remove = function() {
this.parent.children.remove(this.id);
}
}
所有原型方法都在Task定義中,或者?
function Task(description, value) {
this.id = 0;
this.subId = 0;
this.parent = null;
this.children = new Array();
this.description = description;
this.value = value;
}
Task.prototype.getNextId = function() {
return this.subId++;
},
Task.prototype.addTask = function (task) {
task.id = this.getNextId();
this.children[task.id] = task;
task.parent = this;
},
Task.prototype.remove = function() {
this.parent.children.remove(this.id);
}
我不確定是否有差別。從OOP的角度來看,內部定義看起來更好。
謝謝!
[在構造函數中定義原型方法](http://stackoverflow.com/questions/7115594/defining-prototype-methods-inside-the-constructor)應該回答你的問題(或至少幫助理解差異) 。 –
每次調用構造函數時都會執行「inside」,因此您不想將原型方法定義放在那裏。把它的膽量掛起來是JavaScript「classes」的商標:P' –
@DCoder,我不這麼認爲。他在詢問如何在構造函數內部或外部放置原型方法;我不明白這是如何「涉及」的。 – jrajav