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

2021-09-02 12:33:50 字數 2169 閱讀 7053

函式:原型

每乙個建構函式都有乙個屬性叫做原型(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屬性 解釋及常

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

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

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