在JavaScript 中,有兩種方法為類別定義公共方法:透過原型或使用建構函數功能。雖然據說原型方法由於共享函數引用而更加高效,但需要考慮潛在的效能影響。
function MyClass() { var privateInstanceVariable = 'foo'; this.myFunc = function() { alert(privateInstanceVariable ); } }
在此方法中,該類別的每個實例都有自己的私有實例變數和 myFunc 方法的自己的副本。
function MyClass() { } MyClass.prototype.myFunc = function() { alert("I can't use private instance variables. :("); }
這裡,myFunc 方法是在類別原型上定義的。所有實例共享相同的函數引用,可能會提高效能。
根據 JavaScript 效能測試 (https://jsperf.app/prototype-vs-this),宣告方法透過原型確實更快。然而,這種差異的重要性值得懷疑。
除非您重複建立和銷毀數千個對象,否則對效能的影響可能可以忽略不計。在大多數情況下,使用對程式碼可讀性和可維護性更有意義的方法更為重要。
需要注意的是,雖然方法 1 支援私有實例變量,但它們僅被視為傳統上私有。如果開發人員願意,他們仍然可以存取它們。為了保護變數免受外部訪問,請考慮使用前導下劃線(例如 _process())來聲明它們,或實作自訂 getter 和 setter 來強制封裝。
以上是JavaScript 中的原型方法與建構方法:真的更快嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!