js的Prototype屬性 解釋及常

2021-06-19 23:47:56 字數 2386 閱讀 5978

解釋及常用方法" rel="noopener noreferrer">js的prototype屬性 解釋及常用方法

jacky民工

函式:原型

每乙個建構函式都有乙個屬性叫做原型(prototype,下面都不再翻譯,使用其原文)。這個屬性非常有用:為乙個特定類宣告通用的變數或者函式。

prototype的定義

你不需要顯式地宣告乙個prototype屬性,因為在每乙個建構函式中都有它的存在。你可以看看下面的例子:

example pt1

code:

function test()

alert(test.prototype); // 輸出 "object"

給prototype新增屬性

就如你在上面所看到的,prototype是乙個物件,因此,你能夠給它新增屬性。你新增給prototype的屬性將會成為使用這個建構函式建立的物件的通用屬性。

例如,我下面有乙個資料型別fish,我想讓所有的魚都有這些屬性:livesin="water"和price=20;為了實現這個,我可以給建構函式fish的prototype新增那些屬性。

example pt2

code:

function fish(name, color)

fish.prototype.livesin="water";

fish.prototype.price=20;

接下來讓我們作幾條魚:

code:

var fish1=new fish("mackarel", "gray");

var fish2=new fish("goldfish", "orange");

var fish3=new fish("salmon", "white");

再來看看魚都有哪些屬性:

code:

for (int i=1; i<=3; i++)

輸出應該是:

code:

"mackarel, gray, water, 20"

"goldfish, orange, water, 20"

"salmon, white water, 20"

你看到所有的魚都有屬性livesin和price,我們甚至都沒有為每一條不同的魚特別宣告這些屬性。這時因為當乙個物件被建立時,這個建構函式 將會把它的屬性prototype賦給新物件的內部屬性__proto__。這個__proto__被這個物件用來查詢它的屬性。

你也可以通過prototype來給所有物件新增共用的函式。這有乙個好處:你不需要每次在構造乙個物件的時候建立並初始化這個函式。為了解釋這一點,讓我們重新來看example dt9並使用prototype來重寫它:

用prototype給物件新增函式

example pt3

code:

function employee(name, salary)

employee.prototype.getsalary=function getsalaryfunction()

employee.prototype.addsalary=function addsalaryfunction(addition)

我們可以象通常那樣建立物件:

code:

var boss1=new employee("joan", 200000);

var boss2=new employee("kim", 100000);

var boss3=new employee("sam", 150000);

並驗證它:

code:

alert(boss1.getsalary()); 

// 輸出 200000

alert(boss2.getsalary()); 

// 輸出 100000

alert(boss3.getsalary()); 

// 輸出 150000

這裡有乙個圖示來說明prototype是如何工作的。這個物件的每乙個例項(boss1, boss2, boss3)都有乙個內部屬性叫做__proto__,這個屬性指向了它的構造器(employee)的屬性prototype。當你執行 getsalary或者addsalary的時候,這個物件會在它的__proto__找到並執行這個**。注意這點:這裡並沒有**的複製(和 example dt8的圖表作一下對比)。

簡單理解js的prototype屬性

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

js的Prototype屬性 解釋及常用方法

函式 原型 每乙個建構函式都有乙個屬性叫做原型 prototype,下面都不再翻譯,使用其原文 這個屬性非常有用 為乙個特定類宣告通用的變數或者函式。prototype的定義 你不需要顯式地宣告乙個prototype屬性,因為在每乙個建構函式中都有它的存在。你可以看看下面的例子 example pt...

js的Prototype屬性 解釋及常用方法

原 函式 原型 每乙個建構函式都有乙個屬性叫做原型 prototype,下面都不再翻譯,使用其原文 這個屬性非常有用 為乙個特定類宣告通用的變數或者函式。prototype的定義 你不需要顯式地宣告乙個prototype屬性,因為在每乙個建構函式中都有它的存在。你可以看看下面的例子 example ...