【筆記】javascript原型屬性prototype,javascript原型鏈

來源:互聯網
上載者:User

【筆記】javascript原型屬性prototype,javascript原型鏈
在javascript中,函數本身也是一個包含了方法和屬性的對象。

length返回的是參數的數量。

在第4章中,我們已經學習了如何定義構造器函數,並用它來建立(構造)對象。這種做法的主要意圖是通過new操作符來調用函數,以達到訪問對象this值的目的,然後,構造器就可以將其所建立的對象返回給我們。這樣,我們就有了一種賦予建立對象一定功能(即為其添加屬性和方法)的方法。

利用原型添加方法和屬性:function Gadget(name,color){ this.name = name; this.color = color; this.wharAreYou = function(){  return 'I am a ' + this.color + ' ' + this.name; }}
/* 通過prototype添加屬性和方法 */Gadget.prototype.price = 100;Gadget.prototype.rating = 3;Gadget.prototype.getInfo = function() { return 'Rating: ' + this.rating +',price: ' + this.price;};
/* 除了以上的方式,還可以通過定義一個對象,然後將其覆蓋到之前的原型上 */Gadget.prototype = { price2:100, rating2:3, getInfo:function(){  return 'Rating2 :' + this.rating2 + ',price2: ' + this.price2; }};

/* 使用原型的方法和屬性 */var newtoy = new Gadget('webcam','black');

從啟動並執行結果來看,後面的方式和前面方式並存的時候,會完全覆蓋掉之前的原型。對於原型來說,最終的是我們要理解它的“駐留”(live)概念。由於在javascript中,對象都是通過傳引用的方式來傳遞的,因為我們建立的每個新對象實體中並沒有一份屬於自己的原型副本。我們可以隨時修改原型,並且與之相關的對象也都會繼承這一改變。甚至可能會影響在修改之前就已經建立了對象。
但是如果對象是在逐個添加之前,則不會發生全部覆蓋的情況。而是部分覆蓋 :


可枚舉屬性:newtoy.hasOwnProperty('price')falsenewtoy.hasOwnProperty('name')truenewtoy.constructor.prototype.propertyIsEnumerable('price');false        //書上是true
為什麼和書上的有出入呢?


每個對象都有一個isPrototypeOf()方法,這個方法會告訴我們當前對象是否是另一個對象的原型。
var monkey  = { hair:true, feeds:'bananas', breathes:'air'};
function Human(name){ this.name = name;}
Human.prototype = monkey;
var george = new Human('George');monkey.isPrototypeOf(george);
-> true

神秘的__proto____proto__實際上是某個實體物件的屬性,而prototype則是屬於構造器函數的屬性。千萬要記住,__proto__只能在學習或調試的環境下使用。








聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.