關於prototype屬性的理解

2022-08-27 20:27:08 字數 908 閱讀 5678

眾所周知,prototype是乙個屬性物件,只要建立乙個新函式,就會根據特定的規則為該函式建立乙個prototype屬性,這個屬性指向函式的原型物件。在預設情況下,所有原型物件都會自動獲得乙個constructor(建構函式)屬性,這個屬性包含乙個指向prototype屬性所在函式的指標。

需要注意的是,prototype是乙個物件,他具體的內部結構是這樣的:

//

建立乙個原型物件

function

foo(){};

console.log(

typeof foo.prototype); //

'object'

foo.prototype.x=1;

foo.prototype.show=function()

//則其內部結構

foo.prototype

根據其內部結構我們再來看最上面的一句話,每個由原型物件建立的物件例項,都會有乙個prototype屬性,其指向原型物件的prototype屬性。原型物件都會自動獲得乙個constructor屬性,這個屬性包含乙個指向prototype屬性所在函式的指標,即在這裡的 foo.prototype.constructor指向foo.

接下來我們在定義這樣一段**

var foo=new

foo();

foo.name="小明";

當呼叫建構函式建立乙個示例之後,該例項的內部將包含乙個指標(內部屬性__protot__),它將指向建構函式的原型物件,這裡就是foo.prototype

這裡,之所以foo物件例項能夠呼叫show()方法的原因就是:js引擎在foo物件中沒有找到show()方法,便通過其_proto_屬性向上找到foo.prototype屬性裡面的show()方法,來完成呼叫。

簡單理解js的prototype屬性

prototype屬性是您有能力向物件新增屬性和方法 先介紹乙個下面要用到的函式,json.stringify value 這個函式的作用是 把傳入的引數value 物件或者陣列 變成字串,它有三個引數,第乙個引數是必須的,其餘的兩個引數可填可不填。var ob 超級簡單的空物件 alert jso...

JSt中物件的prototype屬性

jst中物件的prototype屬性,是用來返回物件型別原型的引用的。我們使用prototype屬性提供物件的類的一組基本功能。並且物件的新例項會 繼承 賦予該物件原型的操作。但是這個prototype到底是怎麼實現和被管理的呢?對於物件的prototype屬性的說明,jscript手冊上如是說 所...

js的Prototype屬性 解釋及常

解釋及常用方法 rel noopener noreferrer js的prototype屬性 解釋及常用方法 jacky民工 函式 原型 每乙個建構函式都有乙個屬性叫做原型 prototype,下面都不再翻譯,使用其原文 這個屬性非常有用 為乙個特定類宣告通用的變數或者函式。prototype的定義...