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判斷一個對象是否有名稱的屬性或對象,此方法無法檢查該對象的原型鏈中是否具有該屬性,該屬性必須是對象本身的一個成員。
如果該屬性或者方法是該 對象自身定義的而不是器原型鏈中定義的 則返回true;否則返回false;
格式如下:
object.hasOwnProperty(proName);
判斷proName的名稱是不是object對象的一個屬性或對象。使用舉例如下:
// 得到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判斷一個對象是否有名稱的屬性或對象,此方法無法檢查該對象的原型鏈中是否具有該屬性,該屬性必須是對象本身的一個成員。
如果該屬性或者方法是該 對象自身定義的而不是器原型鏈中定義的 則返回true;否則返回false;
格式如下:
object.hasOwnProperty(proName);
判斷proName的名稱是不是object對象的一個屬性或對象。使用舉例如下:
復制代碼 代碼如下:
// 得到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)建 實例附注釋
為了讓你的js代碼更加的專業(yè)與代碼的條理性,很多情況下都是定義成對象的方式來書寫代碼,想深入的朋友可以參考下。2011-02-02
javascript 面向對象全新理練之繼承與多態(tài)
前面我們討論了如何在 JavaScript 語言中實現(xiàn)對私有實例成員、公有實例成員、私有靜態(tài)成員、公有靜態(tài)成員和靜態(tài)類的封裝。這次我們來討論一下面向對象程序設計中的另外兩個要素:繼承與多態(tài)。2009-12-12
JavaScript 構造函數(shù) 面相對象學習必備知識
關于JavaScript構造函數(shù),如今出現(xiàn)了很多JavaScript的框架,例如jQuery、Ext等等這些,這些將JavaScript作為一種面向對象的語言進行編程,那么JavaScript到底是怎么樣實現(xiàn)面向對象的一些特征的呢,首先,我們來看看JavaScript怎么樣來定義一個構造函數(shù)。2010-06-06
JavaScript 創(chuàng)建對象和構造類實現(xiàn)代碼
JavaScript學習筆記:創(chuàng)建對象和構造類.2009-07-07

