定義和用法
prototype 屬性使您有能力為物件新增屬性和方法。
語法
object.prototype.name=value
實例
在本例中,我們將展示如何使用prototype 屬性來新增屬性給物件:
<script type="text/javascript"> function employee(name,job,born) { this.name=name; this.job=job; this.born=born; } var bill=new employee("Bill Gates","Engineer",1985);employee.prototype.salary=null;bill.salary=20000; document.write(bill.salary); </script>
輸出:
20000
prototype屬性的作用
為了解決建構子的物件實例之間無法共享屬性的缺點,js提供了prototype屬性。
js中每個資料型別都是物件(除了null和undefined),而每個物件都繼承自另一個對象,後者稱為「原型」(prototype)對象,只有null除外,它沒有自己的原型物件。
原型物件上的所有屬性和方法,都會被物件實例所共用。
透過建構函式產生物件實例時,會將物件實例的原型指向建構函式的prototype屬性。每一個建構函式都有一個prototype屬性,這個屬性就是物件實例的原型物件。
function Person(name,height){ this.name=name; this.height=height; } Person.prototype.hobby=function(){ return 'watching movies'; } var boy=new Person('keith',180); var girl=new Person('rascal',153); console.log(boy.name); //'keith' console.log(girl.name); //'rascal' console.log(boy.hobby===girl.hobby); //true
上面程式碼中,如果將hobby方法放在原型物件上,那麼兩個實例物件都共用著同一個方法。我希望大家都能理解的是,對於建構子來說,prototype是作為建構子的屬性;對於物件實例來說,prototype是物件實例的原型物件。所以prototype即是屬性,又是物件。
以上是JavaScript為物件新增屬性和方法的屬性prototype的詳細內容。更多資訊請關注PHP中文網其他相關文章!