列舉是指物件中的屬性是否可以遍歷出來,再簡單點說就是屬性是否可以列舉出來。
for…in 遍歷自身的和原型上繼承的可列舉屬性
object.keys 遍歷自身可列舉屬性
json.stringify的使用 字串化自身可列舉屬性
let obj =
object.
defineproperty
(obj,
"hobby",)
object.prototype.
foo=
function()
// 可以遍歷自身以及原型鏈上的可列舉屬性
for(
const key in obj)
//遍歷自身的可列舉屬性
const res = object.
keys
(obj)
console.
log(res)
;//["name","age"]
//遍歷自身可列舉和不可列舉的屬性
const result = object.
getownpropertynames
(obj)
console.
log(result)
;//["name", "age", "hobby"]
每個物件都有propertyisenumerable()方法,這個方法可以判斷出指定的屬性是否可列舉。
用法:obj.propertyisenumerable(「屬性名」);
console.
log(person.
propertyisenumerable
('name'))
;//true
console.
log(person.
propertyisenumerable
('age'))
;//false
console.
log(person.
propertyisenumerable
('hobby'))
;//false
for…in迴圈是遍歷自身以及原型鏈上面的可列舉屬性;
而object.keys只能遍歷自身的可列舉屬性,不可以遍歷原型鏈上的可列舉屬性,這是for…in和object.keys()的主要區別;
object.getownpropertynames則是遍歷自身所有屬性(不論是否可列舉)。
判斷是否可以關燈
description 給你 n 個開關和 m 個燈。第 i 個開關開啟某一些燈。該資訊以矩陣形式 n 行 m 列 如果第 i 個開關能開啟第 j 個燈,則 a ij 1,如果不能開啟則 a ij 0 最初,所有 m 燈都關閉。開關狀態僅能從 關 變為 開 這意味著如果兩個或更多開關連線到同乙個燈,...
判斷元素是否可以滾動scroll
因為要做類似於微博的懶載入功能,所以要寫乙個懶載入元件lazyload.js。寫的過程中,有乙個很坑的問題 比如一般監聽整個body頁面的lazyload,則需要監聽window.onscroll事件。如果每屏載入10條資料,但是電腦螢幕大了,10條資料也沒有佔滿螢幕,此時就沒法觸發body的滾動,...
js判斷是否含有中文
第一種 exfcode 1functionischinese temp 2 第二種 exfcode 01functionischn str 02else 第三種 exfcode 01functionfuncchina 02else 第四種 exfcode 1functionischina s 2el...