先定義三種不同型別的屬性(方法也可當作屬性來看待)
//宣告類和類的建構函式function person(name,age)
this.setname=function(name)
this.setage=function(age)
} var person = new person('xiao', 21);
//類的靜態屬性方法
person.max_age=120; //類的靜態屬性
person.cry=function()
//類的prototype屬性方法
function chinese()
} chinese.prototype=new person('xiaomin');
var xiaomin = new chinese();
1. 遍歷屬性
for(var p in xiaomin)返回所有屬性名
document.writeln(object.keys(person)); //=>name,age,sayhello,setname
返回所有自有屬性名
document.writeln(object.getownpropertynames(xiaomin)); //=>sayhello
2. 刪除屬性
document.writeln(person.age); //=> 21document.writeln(delete person.age); //=> true
document.writeln(person.age); //=> undefined
document.writeln(delete person.weight); //=> true
document.writeln(delete person.sayhello); //=> true
if(person.sayhello)else
document.writeln(delete person.max_age); //=> true
document.writeln(person.max_age); //=>undefined 靜態屬性可被刪除
document.writeln(delete person.cry); //=> true
//丟擲異常, 靜態方法可被刪除
document.writeln('**********==='); //=> true
document.writeln(chinese.prototype.name); //=> xiao
document.writeln(delete chinese.prototype.name); //=> true
document.writeln(chinese.prototype.name); //=> undefined, prototype中的屬性被刪除
document.writeln(delete chinese.prototype); //=> false, prototype不能被刪除
document.writeln(delete xiaomin.sayhello); //=> true
//丟擲異常, 繼承的方法可被刪除
3. 檢測屬性
//js物件可看作屬性的集合,我們經常會檢測集合中成員的所屬關係--判斷某個屬性是否存在於某個物件中。xiaomin.weight=100;
//用in判斷屬性/方法是否在物件中
document.writeln('weight' in xiaomin); //=> true, xiaomin的自有屬性/方法可被in檢測
document.writeln('setage' in xiaomin); //=> true, xiaomin的繼承屬性/方法可被in檢測
//用hasownproperty判斷屬性/方法是否是物件自有的(非繼承的)
document.writeln(xiaomin.hasownproperty('weight')); //=> true, weight是xiaomin的自有屬性/方法
document.writeln(xiaomin.hasownproperty('setage')); //=> false, setage不是xiaomin的自有屬性/方法
//propertyisenumerable是hasownproperty的增強版,只有檢測到是自有屬性且這個屬性的可列舉(可遍歷)性為true時才返回true
document.writeln(xiaomin.propertyisenumerable('weight')); //=> true
document.writeln(xiaomin.propertyisenumerable('setage')); //=> false 非自有屬性
document.writeln(xiaomin.propertyisenumerable('tostring')); //=> false 非可列舉屬性
//用"!=="判斷乙個屬性是否undefined
document.writeln(xiaomin.weight !== undefined); //=> true
document.writeln(xiaomin.setage !== undefined); //=> true
//注意,上例中使用的是"!=="而不是"!=", "!=="可區分undefined和null.
屬性的遍歷
es6一共有5種方法可以遍歷物件的屬性 1 for in for in迴圈遍歷物件自身的和繼承的可列舉屬性 不含symbol屬性 2 object.keys obj object.keys返回乙個陣列,包括物件自身的 不含繼承的 所有可列舉屬性 不含symbol屬性 的鍵名。3 object.get...
屬性名的遍歷
symbol作為屬性名,不會出現在for in,for of迴圈中,也不會被object.keys object.getownpropertynames json.stringify 返回,但是它也不是私有屬性,有乙個object.getownpropertysymbols方法,可以獲取指定物件的所...
js中的屬性檢測
js中的屬性檢測,主要就是檢測乙個屬性是否屬於某個物件。常用的方式主要有3種 in hasownproperty propertyisenumerable in運算子 in運算子的左側為屬性名稱,右側為物件。var obj console.log name in obj true console.l...