2013-08-21 52 views
2

由於主題是什麼,當我們正在定義未來的對象:this.method VS prototype.method - 是的區別

function Person(name) { 
    this.sayName = function() { 
     console.log(this.name); 
    }; 
} 

Person.prototype.sayName = function() { 
    console.log(this.name); 
}; 

兩種方法將可用於新創建的對象(前)。唯一的區別是'this'表達式將爲每個實例創建這個方法,'prototype'會在內存中共享(據我所知)。我遇到過兩種表情,有趣的是第一種表情比第二種表情更受歡迎。

我的問題是...... JavaScript中的第一個或第二個正確的方法是什麼? (我知道這兩個作品,但...什麼是代碼工程標準,爲什麼)。

+2

檢查側邊欄的相關問題。 http://stackoverflow.com/questions/6918509/this-method-function-vs-obj-prototype-method-function?rq=1 – elclanrs

回答

1

正確的方法是第二個(你還需要什麼樣的原型?)。

第一種方法的優點是能夠得到這樣的私有變量能力:如果你聲明在構造函數(function Person)一個局部變量,那麼你就可以在因爲closuressayName方法來使用它。而且這個變量不能從你的「班級」中訪問。