可列舉與不可列舉

2021-09-27 21:21:11 字數 797 閱讀 8305

(1)在js中,物件的屬性分為可列舉和不可列舉,它們是由屬性的enumerable值決定的,不可列舉屬性,用for...in是遍歷不到的,js中內建屬性是遍歷不到的。

舉個例子:

function p(){

this.a ='nihao';

this.b ='yes';

this.c =function(){

console.log('1');

p.prototype.look = function(){

console.log('2');

var b = new p();

for(var i in b){

console.log(b[i]);

這時候,我們可以遍歷到物件b的所有可列舉屬性,其中包括從原型繼承來的。

but...

console.log(object.keys(b))得到的結果卻只是自身屬性。

and...

console.log(json.stringify(b))得到的結果也是自身屬性,但是不包括函式在內。

es5中提供了乙個方法,用於遍歷所有屬性(不論是否是可列舉的)

object.defineproperty(b,'age',{

value:18,

enumerable:false

console.log(object.getownpropertynames(b))這樣就得到了所有的屬性。

(2)其中,定義object物件的prototypeisenumerable()方法可以判斷此物件是否包含某個屬性,並且這個屬性是否可列舉。

js中的列舉和不可列舉

列舉是指物件中的屬性是否可以遍歷出來,再簡單點說就是屬性是否可以以列舉出來。1.for in迴圈可以列舉 遍歷 出物件本身具有的屬性,通過object.defineproperty 方法加的可列舉屬性,或者通過原型物件繫結的可以列舉屬性。function enumer enumer.prototyp...

js中的列舉型別和不可列舉型別

列舉 是指物件中的屬性可以遍歷出來,再簡單點就是屬性可以列舉出來。可列舉性決定了這個屬性能否被for in查詢遍歷到。js中基本包裝型別的原型屬性是不可列舉的,如object,array,number等,如果你寫出這樣的 遍歷其中的屬性 var num new number for var pro ...

列舉數與可列舉型別

列舉數 可以理解為指向類成員的指標 可列舉型別 可以列舉的型別,必須具有getenumerator 方法 列舉數有三種型別 1.ienmverator ienumerable介面,非泛型介面形式 2.ienmverator ienumerable泛型介面 3.不使用介面形式 非泛型列舉介面 ienu...