2 回答

TA貢獻1862條經(jīng)驗 獲得超7個贊
for...in 循環(huán)只遍歷可枚舉的屬性(包括自有屬性和從原型鏈中繼承的屬性),屬性是否可枚舉由屬性的enumerable值決定,內(nèi)置方法全部都是不可枚舉的
js代碼中使用obj.prop = value/function(){} 方式添加的屬性都是可枚舉屬性,若要添加不可枚舉屬性,可用如下方式:
var kxy = new Person();
Object.defineProperty(kxy, "sex", { value: "female", enumerable: false});
有兩種方法可以查看內(nèi)置對象的屬性:
第一種利用getOwnPropertyNames,該函數(shù)返回所有自有屬性(不包括繼承的),不管是否可枚舉
var props = Object.getOwnPropertyNames(String.prototype);
for(var i=0;i<props.length;i++){
console.log(props[i]);
}
第二種最簡單:
console.log(String.prototype);
console.log(Array.prototype);
控制臺顯示的就是內(nèi)置對象的所有屬性了(String對象繼承的屬性都是從String.prototype來的)

TA貢獻1886條經(jīng)驗 獲得超2個贊
for in能用于所有的對象,包括數(shù)組,例如下面的代碼顯示document的所有屬性: for (var i in document) document.write('document.'+i+' = '+document[i]); 輸出內(nèi)容如下(可能查看你的瀏覽器兼容性): document.namespaces = [object] documen
添加回答
舉報