JS hasOwnProperty()方法檢測一個屬性是否是對象的自有屬性的方法
JavaScript hasOwnProperty() 方法是 Object 的原型方法(也稱實例方法),它定義在 Object.prototype 對象之上,所有 Object 的實例對象都會繼承 hasOwnProperty() 方法。
hasOwnProperty() 方法用來檢測一個屬性是否是對象的自有屬性,而不是從原型鏈繼承的。如果該屬性是自有屬性,那么返回 true,否則返回 false。換句話說,hasOwnProperty() 方法不會檢測對象的原型鏈,只會檢測當前對象本身,只有當前對象本身存在該屬性時才返回 true。
例如,在下面自定義類型中,this.name 就表示對象的自有屬性,而原型對象中的 name 屬性就是繼承屬性。
function F() { //自定義數(shù)據類型 this.name = '自有屬性';}F.prototype.name = '繼承屬性';
hasOwnProperty() 的語法格式如下:
object.hasOwnProperty(propertyName);
參數(shù)說明:propertyName 參數(shù)表示要檢測的屬性名稱。
返回值:返回一個布爾值。如果 propertyName 是自有屬性,那么返回 true,否則返回 false。
示例1
針對上面的自定義類型,可以實例化對象,然后判定當前對象調用的屬性 name 是什么類型。
var f = new F(); //實例化對象console.log(f.hasOwnProperty('name')); //返回true,說明當前調用的 name是自有屬性console.log(f.name); //返回字符串“自有屬性”
凡是構造函數(shù)的原型屬性(原型對象包含的屬性),都是繼承屬性,使用 hasOwnProperty() 方法檢測時,都會返回 false。但是,對于原型對象本身來說,這些原型屬性又是原型對象的自有屬性,所以返回值又是 true。
示例2
在下面示例中,演示了 toString() 方法對于 Date 對象來說是繼承屬性,但是對于 Date 構造函數(shù)的原型對象來說,則是它的自有屬性。
var d = Date;console.log(d.hasOwnProperty('toString')); //返回false,說明toString()是Date的自有屬性var d = Date.prototype;console.log(d.hasOwnProperty('toString')); //返回true,說明toString()是Date.prototype屬性
hasOwnProperty() 方法只能判斷指定對象中是否包含指定名稱的屬性,無法檢查對象原型鏈中是否包含某個屬性,所以能夠檢測出來的屬性必須是對象成員。
示例3
下面示例演示了 hasOwnProperty() 方法所能檢測的屬性范圍。
var o = { //對象直接量 o1 : { //子對象直接量 o2 : { //孫子對象直接量 name : 1 //孫子對象直接量的屬性 } }};console.log(o.hasOwnProperty('o1')); //返回true,說明o1是o的自有屬性console.log(o.hasOwnProperty('o2')); //返回false,說明o2不是o的自有屬性console.log(o.o1.hasOwnProperty('o2')); //返回true,說明o2是o1的自有屬性console.log(o.o1.hasOwnProperty('name')); //返回false,說明name不是o1的自有屬性console.log(o.o1.hasOwnProperty('name')); //返回true,說明name不是o2的自有屬性
到此這篇關于JS hasOwnProperty()方法檢測一個屬性是否是對象的自有屬性的方法的文章就介紹到這了,更多相關JS hasOwnProperty 內容請搜索好吧啦網以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章:
