JavaScript isPrototypeOf和hasOwnProperty使用區(qū)別
更新時間:2010年03月04日 13:16:05 作者:
JavaScript isPrototypeOf和hasOwnProperty的使用技巧,需要的朋友的朋友可以參考下。
1、isPrototypeOf
isPrototypeOf是用來判斷指定對象object1是否存在于另一個對象object2的原型鏈中,是則返回true,否則返回false。
格式如下:
object1.isPrototypeOf(object2);
object1是一個對象的實例;
object2是另一個將要檢查其原型鏈的對象。
原型鏈可以用來在同一個對象類型的不同實例之間共享功能。
如果 object2 的原型鏈中包含object1,那么 isPrototypeOf 方法返回 true。
如果 object2 不是一個對象或者 object1 沒有出現(xiàn)在 object2 中的原型鏈中,isPrototypeOf 方法將返回 false。
使用舉例如下:
var re = /^\s*/;
// 這里定義一個正則表達式對象
// 這里檢查RegExp是不是re的原形鏈對象,返回true
var bIsptt = RegExp.prototype.isPrototypeOf(re);
2、hasOwnProperty
hasOwnProperty判斷一個對象是否有名稱的屬性或?qū)ο?,此方法無法檢查該對象的原型鏈中是否具有該屬性,該屬性必須是對象本身的一個成員。
如果該屬性或者方法是該 對象自身定義的而不是器原型鏈中定義的 則返回true;否則返回false;
格式如下:
object.hasOwnProperty(proName);
判斷proName的名稱是不是object對象的一個屬性或?qū)ο蟆J褂门e例如下:
// 得到false, 因為不能檢測原型鏈中的屬性
var bStr = "Test String".hasOwnProperty("split");
// String對象的原型上本來就有這個屬性,自然返回true
var bStr1 = String.prototype.hasOwnProperty("split");
// 返回true,因為不是檢測原型中的屬性
var bObj = ({fnTest:function(){}}).hasOwnProperty("fnTest");
isPrototypeOf是用來判斷指定對象object1是否存在于另一個對象object2的原型鏈中,是則返回true,否則返回false。
格式如下:
object1.isPrototypeOf(object2);
object1是一個對象的實例;
object2是另一個將要檢查其原型鏈的對象。
原型鏈可以用來在同一個對象類型的不同實例之間共享功能。
如果 object2 的原型鏈中包含object1,那么 isPrototypeOf 方法返回 true。
如果 object2 不是一個對象或者 object1 沒有出現(xiàn)在 object2 中的原型鏈中,isPrototypeOf 方法將返回 false。
使用舉例如下:
復制代碼 代碼如下:
var re = /^\s*/;
// 這里定義一個正則表達式對象
// 這里檢查RegExp是不是re的原形鏈對象,返回true
var bIsptt = RegExp.prototype.isPrototypeOf(re);
2、hasOwnProperty
hasOwnProperty判斷一個對象是否有名稱的屬性或?qū)ο?,此方法無法檢查該對象的原型鏈中是否具有該屬性,該屬性必須是對象本身的一個成員。
如果該屬性或者方法是該 對象自身定義的而不是器原型鏈中定義的 則返回true;否則返回false;
格式如下:
object.hasOwnProperty(proName);
判斷proName的名稱是不是object對象的一個屬性或?qū)ο蟆J褂门e例如下:
復制代碼 代碼如下:
// 得到false, 因為不能檢測原型鏈中的屬性
var bStr = "Test String".hasOwnProperty("split");
// String對象的原型上本來就有這個屬性,自然返回true
var bStr1 = String.prototype.hasOwnProperty("split");
// 返回true,因為不是檢測原型中的屬性
var bObj = ({fnTest:function(){}}).hasOwnProperty("fnTest");
相關文章
JavaScript 基于原型的對象(創(chuàng)建、調(diào)用)
在我們寫js代碼的時候,內(nèi)部對象是不可避免的要引用,但是光靠這些對象是不夠的,所以需要我們自己定義對象,這個時候通常用到的對象是第三種,即基于原型的對象,下面就如何創(chuàng)建自己的對象,定義對象的方法、屬性,調(diào)用對象給出詳細的說明。2009-10-10- javscript對象原型的小技巧。學習js面向?qū)ο蟮呐笥芽梢詤⒖枷隆?/div> 2010-09-09
用JavaScript實現(xiàn)單繼承和多繼承的簡單方法
JavaScript是一種強大的多泛型編程語言,其融合了面向過程、面向?qū)ο蠛秃瘮?shù)式編程于一身,具備強大的表現(xiàn)能力。2009-03-03javascript 面向?qū)ο缶幊? function是方法(函數(shù))
在進行編程時,必免不了要碰到復雜的功能。初學者最怕復雜的功能,因為不能夠很好的進行功能邊界劃分,只能一大串if、循環(huán)加case堆疊在一起,結(jié)果出來的程序自己看著暈,別人看著更暈。2009-09-09詳解new function(){}和function(){}() 區(qū)別分析
只要 new 表達式之后的 constructor 返回(return)一個引用對象(數(shù)組,對象,函數(shù)等),都將覆蓋new創(chuàng)建的匿名對象,如果返回(return)一個原始類型(無 return 時其實為 return 原始類型 undefined),那么就返回 new 創(chuàng)建的匿名對象。2008-03-03最新評論