JavaScript物件導向編程(3)prototype簡介

來源:互聯網
上載者:User

JavaScript物件導向編程(3)prototype簡介

prototype——原型,用於給對象動態地新增屬性和行為

先定義個建構函式

//小配件function Gadget(name, color) {this.name = name;this.color = color;this.whatAreYou = function(){return '我是 ' + this.color + '的' + this.name;}this.get = function(what){return this[what];//對象與數組有類似之處,js的[]中可以是下標,也可以是對象的屬性}}

使用prototype增加屬性和方法

/*使用prototype增加屬性和方法*/Gadget.prototype.price = 100;//增加屬性Gadget.prototype.rating = 3;//增加行為==方法==或者叫函數Gadget.prototype.getInfo = function() {return '等級: ' + this.rating + ', 價格: ' + this.price;};/*也可批量替換或新增*/Gadget.prototype = {price:100,rating:3,getInfo:function() {//可訪問原始屬性return '名字:'+this.name+',等級: ' + this.rating + ', 價格: ' + this.price;}};var toy = new Gadget('網路攝影機','黑色');alert(toy.getInfo());//可訪問新的方法,也可訪問原有的屬性和方法


/*屬性的遍曆及判斷*/

for(i in toy){if(typeof(toy[i])!="function")//遍曆出toy上可以訪問的所有的屬性及屬性值alert(i + '=' + toy[i]);}
//判斷屬性是不是原始的for(prop in toy){if (toy.hasOwnProperty(prop)) {alert("原始:"+prop + '=' + toy[prop]);}}


每個對象都有isPrototypeOf方法,用於判斷當前對象是不是另外一個對象的prototype

/*Every object also gets the isPrototypeOf() method.  * This method tells you whether that specific object is used as a prototype of another object.每個對象都有isPrototypeOf方法,用於判斷當前對象是不是另外一個對象的prototype* */var monkey = {hair: true,feeds: 'bananas',breathes: 'air'};function Human(name) {this.name = name;}Human.prototype = monkey;var george = new Human('George');alert("monkey.isPrototypeOf(george)==="+ monkey.isPrototypeOf(george));

總結:
可以將prototype看做是一個額外的對象,在構造器上引用一個prototype對象,這個對象擁有一些屬性和方法;

通過建構函式產生的對象也自然連結了這個prototype對象,而且可以把prototype對象的屬性和方法當做自己的;

當然,原始的屬性和通過prototype獲得的屬性還是有些不一樣,至少通過hasOwnProperty可以判斷出這個屬性是不是自己的原生屬性;

另外,可以通過a.isPrototypeOf(b)來判斷a是不是b的prototype。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.