在JavaScript 程式設計領域,術語「原型」 ' 和'this' 在物件導向開發中起著至關重要的作用。然而,他們獨特的行為可能會導致混亂。本文旨在闡明這些概念之間的差異,並全面了解它們的用法。
“this”是一個特殊關鍵字,指的是調用函數的當前上下文。它提供對物件的實例屬性和方法的存取。如果呼叫函數時不使用「new」運算符,「this」將預設為全域物件(瀏覽器環境中的視窗)。
'prototype' 是一個屬性提供了一種在函數的多個實例之間共享屬性和方法的方法的函數。此函數的每個實例都可以透過其隱藏的 [[Prototype]] 屬性存取原型的屬性和方法。
場景1:
直接在上面定義一個方法函數:
var A = function () { this.x = function () { // Do something }; };
在這種情況下,表達式'this.x()' 引用'window.x()',因為'this' 預設為全域物件。
場景2:
定義一個方法prototype:
var A = function () { }; A.prototype.x = function () { // Do something };
這裡,'x()'方法被分配給原型物件(' A.prototype')。這允許“A”的所有實例存取“x()”方法。
值得注意的是,使用「原型」來共享方法不一定會帶來顯著的記憶體節省。但是,與每個實例都有自己的方法副本相比,它通常會減少記憶體消耗。
以上是JavaScript 中的「this」和「prototype」有什麼差別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!