在JavaScript中使用「this.prototype」與外「Constructor.prototype」,限定了classlike(構造)功能的方法,通常進行這樣的:在OOP
function Class1() {
// ... code ...
}
Class1.prototype.method1 = function(args) {
// ... code ...
};
而由一般語法去/ ECMAScript中的語義規則,沒有理由我不能重寫/修改/與
function Class1() {
// ... code ...
this.prototype.method1 = function(args) {
// ... code ...
};
}
那爲什麼不能那麼做延續原來的Object.prototype?代碼看起來會更混亂一些,但是寫和讀更快更清晰(將Class1相關的所有方法置於Class1本身之下)。這不是更好的用途嗎?
您的第二個示例代碼將不起作用。構造函數內的'this'的值是* not *構造函數;這是新創建的對象的值。 – Pointy
然後我可以通過'this.constructor'訪問它嗎?我不妨編輯一下我的問題。 – gchiconi
構造函數針對* every *對象實例化運行。每當您創建一個新對象時,您都會爲原型添加一組相同的函數,這會對性能產生巨大影響。 – meagar