DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
編輯:關於JavaScript     

首先了解枚舉屬性

一般利用for~in遍歷

var a = [1,2,3];
for(var i in a){
console.log(a[i]);
}
or
var o = {p1:1,p2:2};
for(var i in o){
console.log(i+'='+o[i]);
}//p1=1;p2=2;

<1>並不是所有的屬性都會在for~in遍歷中顯示。比如(數組的)length屬性和constructor屬性。那些已經被顯示的屬性被稱為可枚舉的,可以通過各個對象所提供的propertyIsEnumerable()方法來判斷其中有哪些可枚舉的屬性;

<2>原型鏈中的各個屬性也會被顯示出來,前提是它們可枚舉的,hasOwnProperty()來判斷一個屬性是對象自身屬性還是原型屬性;

<3>對於所有的原型屬性,propertyIsEnumerable()都會返回false,包括那些在for~in遍歷中可枚舉的屬性。

js代碼示例

function dog(name,color){
this.name = name;
this.color = color;
this.someMethod = function(){return 1;}
}
dog.prototype.price=100;
dog.prototype.rating=3;
var newDog = new dog("doggg","yellow");
for(var prop in newDog){
console.log(prop+'='+newDog[prop]);
}
//name=doggg
//color=yellow
//someMethod=function (){return 1;}
//price=100
//rating=3
newDog.hasOwnProperty('name');//true;
newDog.hasOwnProperty('price');//false;

只顯示自身屬性

for(var prop in newDog){
if(newDog.hasOwnProperty(prop )){
console.log(prop+'='+newDog[prop]);
}
}
newDog.propertyIsEnumerable('name');//true
newDog.propertyIsEnumerable('constructor');//false

注意:內建屬性和方法大部分是不可枚舉的

任何來自原型鏈中的屬性也是不可枚舉的

如果propertyIsEnumerable()的調用是來自原型鏈上的某個對象,那麼該對象中的屬性是可枚舉的

newDog.constructor.prototype.propertyIsEnumerable('price');//true

isPrototypeOf():每個對象都有,表示當前對象是否是另一個對象的原型

js代碼示例

var monkey = {
hair:true,
feeds:'bananas',
breathes:'air'
};
function Human(name){
this.name = name;
}
Human.prototype = monkey;
var george = new Human('George');
monkey.isPrototypeOf(george);//true

以上所述是小編給大家介紹的JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf(),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對網站的支持!

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved