JavaScript isPrototypeOf和hasOwnProperty使用區(qū)別
更新時(shí)間:2010年03月04日 13:16:05 作者:
JavaScript isPrototypeOf和hasOwnProperty的使用技巧,需要的朋友的朋友可以參考下。
1、isPrototypeOf
isPrototypeOf是用來(lái)判斷指定對(duì)象object1是否存在于另一個(gè)對(duì)象object2的原型鏈中,是則返回true,否則返回false。
格式如下:
object1.isPrototypeOf(object2);
object1是一個(gè)對(duì)象的實(shí)例;
object2是另一個(gè)將要檢查其原型鏈的對(duì)象。
原型鏈可以用來(lái)在同一個(gè)對(duì)象類(lèi)型的不同實(shí)例之間共享功能。
如果 object2 的原型鏈中包含object1,那么 isPrototypeOf 方法返回 true。
如果 object2 不是一個(gè)對(duì)象或者 object1 沒(méi)有出現(xiàn)在 object2 中的原型鏈中,isPrototypeOf 方法將返回 false。
使用舉例如下:
var re = /^\s*/;
// 這里定義一個(gè)正則表達(dá)式對(duì)象
// 這里檢查RegExp是不是re的原形鏈對(duì)象,返回true
var bIsptt = RegExp.prototype.isPrototypeOf(re);
2、hasOwnProperty
hasOwnProperty判斷一個(gè)對(duì)象是否有名稱(chēng)的屬性或?qū)ο螅朔椒o(wú)法檢查該對(duì)象的原型鏈中是否具有該屬性,該屬性必須是對(duì)象本身的一個(gè)成員。
如果該屬性或者方法是該 對(duì)象自身定義的而不是器原型鏈中定義的 則返回true;否則返回false;
格式如下:
object.hasOwnProperty(proName);
判斷proName的名稱(chēng)是不是object對(duì)象的一個(gè)屬性或?qū)ο?。使用舉例如下:
// 得到false, 因?yàn)椴荒軝z測(cè)原型鏈中的屬性
var bStr = "Test String".hasOwnProperty("split");
// String對(duì)象的原型上本來(lái)就有這個(gè)屬性,自然返回true
var bStr1 = String.prototype.hasOwnProperty("split");
// 返回true,因?yàn)椴皇菣z測(cè)原型中的屬性
var bObj = ({fnTest:function(){}}).hasOwnProperty("fnTest");
isPrototypeOf是用來(lái)判斷指定對(duì)象object1是否存在于另一個(gè)對(duì)象object2的原型鏈中,是則返回true,否則返回false。
格式如下:
object1.isPrototypeOf(object2);
object1是一個(gè)對(duì)象的實(shí)例;
object2是另一個(gè)將要檢查其原型鏈的對(duì)象。
原型鏈可以用來(lái)在同一個(gè)對(duì)象類(lèi)型的不同實(shí)例之間共享功能。
如果 object2 的原型鏈中包含object1,那么 isPrototypeOf 方法返回 true。
如果 object2 不是一個(gè)對(duì)象或者 object1 沒(méi)有出現(xiàn)在 object2 中的原型鏈中,isPrototypeOf 方法將返回 false。
使用舉例如下:
復(fù)制代碼 代碼如下:
var re = /^\s*/;
// 這里定義一個(gè)正則表達(dá)式對(duì)象
// 這里檢查RegExp是不是re的原形鏈對(duì)象,返回true
var bIsptt = RegExp.prototype.isPrototypeOf(re);
2、hasOwnProperty
hasOwnProperty判斷一個(gè)對(duì)象是否有名稱(chēng)的屬性或?qū)ο螅朔椒o(wú)法檢查該對(duì)象的原型鏈中是否具有該屬性,該屬性必須是對(duì)象本身的一個(gè)成員。
如果該屬性或者方法是該 對(duì)象自身定義的而不是器原型鏈中定義的 則返回true;否則返回false;
格式如下:
object.hasOwnProperty(proName);
判斷proName的名稱(chēng)是不是object對(duì)象的一個(gè)屬性或?qū)ο?。使用舉例如下:
復(fù)制代碼 代碼如下:
// 得到false, 因?yàn)椴荒軝z測(cè)原型鏈中的屬性
var bStr = "Test String".hasOwnProperty("split");
// String對(duì)象的原型上本來(lái)就有這個(gè)屬性,自然返回true
var bStr1 = String.prototype.hasOwnProperty("split");
// 返回true,因?yàn)椴皇菣z測(cè)原型中的屬性
var bObj = ({fnTest:function(){}}).hasOwnProperty("fnTest");
相關(guān)文章
javascript中的對(duì)象創(chuàng)建 實(shí)例附注釋
為了讓你的js代碼更加的專(zhuān)業(yè)與代碼的條理性,很多情況下都是定義成對(duì)象的方式來(lái)書(shū)寫(xiě)代碼,想深入的朋友可以參考下。2011-02-02
javascript 面向?qū)ο笕吕砭氈^承與多態(tài)
前面我們討論了如何在 JavaScript 語(yǔ)言中實(shí)現(xiàn)對(duì)私有實(shí)例成員、公有實(shí)例成員、私有靜態(tài)成員、公有靜態(tài)成員和靜態(tài)類(lèi)的封裝。這次我們來(lái)討論一下面向?qū)ο蟪绦蛟O(shè)計(jì)中的另外兩個(gè)要素:繼承與多態(tài)。2009-12-12
JavaScript 設(shè)計(jì)模式學(xué)習(xí) Singleton
JavaScript設(shè)計(jì)模式學(xué)習(xí) Singleton2009-07-07
js對(duì)象的構(gòu)造和繼承實(shí)現(xiàn)代碼
js對(duì)象的構(gòu)造和繼承實(shí)現(xiàn)代碼,學(xué)習(xí)javascript面向?qū)ο蟮呐笥芽梢詤⒖枷?。?xiě)出跟漂亮與復(fù)用的代碼。2010-12-12
JavaScript 構(gòu)造函數(shù) 面相對(duì)象學(xué)習(xí)必備知識(shí)
關(guān)于JavaScript構(gòu)造函數(shù),如今出現(xiàn)了很多JavaScript的框架,例如jQuery、Ext等等這些,這些將JavaScript作為一種面向?qū)ο蟮恼Z(yǔ)言進(jìn)行編程,那么JavaScript到底是怎么樣實(shí)現(xiàn)面向?qū)ο蟮囊恍┨卣鞯哪?,首先,我們?lái)看看JavaScript怎么樣來(lái)定義一個(gè)構(gòu)造函數(shù)。2010-06-06
JavaScript 創(chuàng)建對(duì)象和構(gòu)造類(lèi)實(shí)現(xiàn)代碼
JavaScript學(xué)習(xí)筆記:創(chuàng)建對(duì)象和構(gòu)造類(lèi).2009-07-07
javascript 面向?qū)ο缶幊袒A(chǔ):封裝
“在面向?qū)ο蟮乃枷胫?,最核心的概念之一就是?lèi)。一個(gè)類(lèi)表示了具有相似性質(zhì)的一類(lèi)事物的抽象,通過(guò)實(shí)例化一個(gè)類(lèi),可以獲得屬于該類(lèi)的一個(gè)實(shí)例(即對(duì)象)”。2009-08-08

