js中的列舉和不可列舉

2021-08-16 22:50:44 字數 988 閱讀 7914

列舉是指物件中的屬性是否可以遍歷出來,再簡單點說就是屬性是否可以以列舉出來。

1.for…in迴圈可以列舉(遍歷)出物件本身具有的屬性,通過object.defineproperty()方法加的可列舉屬性,或者通過原型物件繫結的可以列舉屬性。
function

enumer

() enumer.prototype.b = '我是通過原型物件掛載的屬性';

let fn = new enumer();

object.defineproperty(fn, 'c', );

for(let item in fn)

/*輸出*/

// a

// b

// c

2.object.keys()方法可以列舉物件本身的屬性和通過object.defineproperty()新增的可列舉屬性
function

enumer

() enumer.prototype.b = '我是通過原型物件掛載的屬性';

let fn = new enumer();

object.defineproperty(fn, 'c', );

console.log(object.keys(fn));

/*輸出*/

// ["a", "c"]

3.json.stringify()方法只能序列化本身的屬性和通過object.defineproperty()新增的可列舉屬性為json物件
function

enumer

() enumer.prototype.b = '我是通過原型物件掛載的屬性';

let fn = new enumer();

object.defineproperty(fn, 'c', );

console.log(json.stringify(fn));

//

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

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

可列舉與不可列舉

1 在js中,物件的屬性分為可列舉和不可列舉,它們是由屬性的enumerable值決定的,不可列舉屬性,用for.in是遍歷不到的,js中內建屬性是遍歷不到的。舉個例子 function p this.a nihao this.b yes this.c function console.log 1 ...

js中 列舉 的使用

習慣了.net程式設計,c 的列舉很好用,無論管理上,可讀上,易用上都非常強大。js作為弱型別解析語言,並沒有嚴格的資料型別限定。列舉 在js中並不存在的。通過定義上,列舉是一種類常量的存在,只不過vs.net可以自動導航到列舉的資料型別存在,並且自動給與使用者提供選擇。vs.net2008增加了j...