函式:原型
每乙個建構函式都有乙個屬性叫做原型(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=newfish("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來給所有物件新增共用的函式。這有乙個好處:你不需要每次在構造乙個物件的時候建立並初始化這個函式。為了解釋這一點,讓我們重新來看exampledt9並使用prototype來重寫它:
用prototype給物件新增函式
example pt3
code:
function employee(name, salary)
employee.prototype.getsalary=function getsalaryfunction()
employee.prototype.addsalary=functionaddsalaryfunction(addition)
我們可以象通常那樣建立物件:
code:
var boss1=newemployee("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的時候,這
簡單理解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 ...