JavaScript原型對象的屬性和方法

前面介紹了普通對象的原型鏈結構,下面會先介紹一下原型對象中的屬性和方法,而後介紹函數對象的原型鏈,最後將原型鏈進行整合一下.瀏覽器

第一部分Object.prototype的屬性和方法函數

1 Object.prototype.toString方法工具

由於Object.prototype頂級對象中定義了toString方法,因此任何對象都有一個toString方法.prototype

能夠用來檢測對象的類型,固然只能檢測內置對象的類型,若是是自定義構造函數建立的對象的話沒法準確檢測出來類型.對象

使用方式:Object.prototype.toString.call(對象)blog

輸出結果:"[object 構造函數名稱]"繼承

最後輸出的結果中第二個值就是對象對應的對象類型.原型鏈

2 Object.prototype.hasOwnProperty()開發

判斷一個屬性是否屬於對象自己,而不是繼承過來的屬性,返回值是true或者false.原型

全部對象均可以直接調用這個方法.

3 Object.prototype.isPrototypeOf()

判斷當前對象是不是參數對象的原型對象,返回值true或者false.

全部對象均可以直接調用這個方法.

4 Object.prototype.propertyIsEnumerable()

檢測這個屬性在對象中是否能夠被枚舉,返回值true或者false.

是否能夠被枚舉指的是可否經過for...in循環語句訪問到這個屬性.

第二部分函數對象的原型鏈

函數對象的原型鏈也是基於Object原型鏈的基礎上的.

咱們能夠最後總結出兩個結論:

a 任何函數都是Function構造函數的實例(包括Object等構造函數以及Function本身,也就是說本身建立了本身):函數.__proto__===Function.prototype===Function.__proto__

b Function的原型對象繼承於Object的原型對象:Function.prototype.__proto__===Object.prototype

最後咱們得出:Object.prototype是全部對象的頂級對象.

第三部分原型鏈的整合

原型鏈的概念比較抽象,我這裏畫了一個原型結構圖,能夠方便記憶,固然能夠直接使用瀏覽器的開發者工具查找一個對象的原型鏈結構.

相關文章
相關標籤/搜索