Baseline Widely available
for...in
è¯å¥è¿ä»£ä¸ä¸ªå¯¹è±¡çææå¯æä¸¾åç¬¦ä¸²å±æ§ï¼é¤ Symbol 以å¤ï¼ï¼å
æ¬ç»§æ¿ç坿䏾屿§ã
const object = { a: 1, b: 2, c: 3 };
for (const property in object) {
console.log(`${property}: ${object[property]}`);
}
// Expected output:
// "a: 1"
// "b: 2"
// "c: 3"
è¯æ³
for (variable in object)
statement
åæ°
variable
卿¯æ¬¡è¿ä»£æ¶æ¥æ¶ä¸ä¸ªåç¬¦ä¸²å±æ§åãå®å¯ä»¥éè¿ä½¿ç¨ const
ãlet
æ var
è¿è¡å£°æï¼ä¹å¯ä»¥æ¯ä¸ä¸ªèµå¼ç®æ ï¼ä¾å¦ï¼å
å声æçåéãå¯¹è±¡å±æ§æè§£ææ¨¡å¼ï¼ãä½¿ç¨ var
声æçåéä¸ä¼å±éäºå¾ªç¯å
é¨ï¼å³å®ä»¬ä¸ for...in
å¾ªç¯æå¨çä½ç¨åç¸åã
object
被è¿ä»£é符å·å¯æä¸¾å±æ§ç对象ã
statement
æ¯æ¬¡è¿ä»£åæ§è¡çè¯å¥ãå¯ä»¥å¼ç¨ variable
ãå¯ä»¥ä½¿ç¨åè¯å¥æ§è¡å¤ä¸ªè¯å¥ã
该循ç¯å°è¿ä»£å¯¹è±¡æ¬èº«çææå¯æä¸¾å±æ§ï¼ä»¥å对象ä»å ¶ååé¾ç»§æ¿ç屿§ï¼ååé¾ä¸è¾è¿çååç屿§ä¼å äºè¾è¿çååç屿§ï¼ã
for...in
循ç¯åªä¼è¿ä»£å¯æä¸¾çé符å·å±æ§ãä»å
ç½®æé 彿°ï¼å¦ Array
å Object
ï¼å建ç对象ä¼ä» Array.prototype
å Object.prototype
ç»§æ¿ä¸å¯æä¸¾å±æ§ï¼ä¾å¦ Array
ç indexOf()
æ¹æ³æ Object
ç toString()
æ¹æ³ï¼å®ä»¬å¨ for...in
循ç¯ä¸ä¸ä¼è¢«è®¿é®å°ã
æ ¹æ®ç°ä»£ ECMAScript è§èçå®ä¹ï¼éåçé¡ºåºæ¯ä¸è´ä¸å¯é¢æµçãå¨ååé¾çæ¯ä¸ªç»ä»¶ä¸ï¼ææéè´æ´æ°é®ï¼å¯ä»¥ä½ä¸ºæ°ç»ç´¢å¼ï¼å°é¦å æå¼ååºéåï¼ç¶åæ¯å ¶ä»åç¬¦ä¸²é®æå±æ§å建çå å顺åºååºéåã
å¨ for...in
循ç¯ä¸ï¼variable
é¨åå¯ä»¥æ¥åä»»ä½å¨ =
è¿ç®ç¬¦ä¹åçå
容ãåªè¦å¨å¾ªç¯ä½å
é¨ä¸éæ°èµå¼ï¼å¯ä»¥å¨è¿ä»£ä¹é´æ´æ¹ï¼å 为å®ä»¬æ¯ä¸¤ä¸ªç¬ç«çåéï¼ï¼ä½ å¯ä»¥ä½¿ç¨ const
æ¥å£°æåéãå¦åï¼ä½ å¯ä»¥ä½¿ç¨ let
ãä½ å¯ä»¥ä½¿ç¨è§£ææ¥ä¸ºå¤ä¸ªå±é¨åéèµå¼ï¼æè
使ç¨å±æ§è®¿é®å¨ï¼ä¾å¦ for (x.y in iterable)
ï¼å°å¼èµç»å¯¹è±¡å±æ§ã
ä¸ç§éççè¯æ³å
è®¸å¨ for...in
循ç¯ä¸ç var
声æç循ç¯åéå
·æåå§å¼ãå¨ä¸¥æ ¼æ¨¡å¼ä¸ï¼è¿ä¼æåºè¯æ³é误ï¼èå¨éä¸¥æ ¼æ¨¡å¼ä¸åä¼è¢«å¿½ç¥ã
for...in
æä»¥ä¸æ¹å¼è®¿é®å±æ§é®ï¼
Object.getOwnPropertyNames()
é常ç¸ä¼¼ãè¿æå³çï¼
ä¸è¬æ¥è¯´ï¼æå¥½ä¸è¦å¨è¿ä»£è¿ç¨ä¸æ·»å ãä¿®æ¹æå é¤å¯¹è±¡å±æ§ï¼é¤éæ¯æ£å¨è®¿é®ç屿§ãè§èæç¡®å 许å®ç°å¯ä»¥å¨ä»¥ä¸æ åµä¸ä¸éµå¾ªä¸è¿°ç®æ³ï¼
å¨è¿äºæ åµä¸ï¼å®ç°å¯è½ä¸ä½ ææçè¡ä¸ºä¸åï¼çè³å¯è½ä¸å ¶ä»å®ç°ä¸åã
æ°ç»è¿ä»£å for...inæ°ç»ç´¢å¼åªæ¯å
·ææ´æ°åç§°ç坿䏾屿§ï¼é¤æ¤ä¹å¤ä¸ä¸è¬å¯¹è±¡å±æ§å®å
¨ç¸åãfor...in
循ç¯å°å¨éåå
¶ä»é®ä¹åéåæææ´æ°é®ï¼å¹¶ä¸æç
§ä¸¥æ ¼éå¢ç顺åºè¿è¡ï¼ä½¿å¾ for...in
çè¡ä¸ºæ¥è¿æ£å¸¸çæ°ç»è¿ä»£ãç¶èï¼for...in
循ç¯ä¼è¿åææå¯æä¸¾å±æ§ï¼å
æ¬é£äºå
·æéæ´æ°åç§°å被继æ¿ç屿§ãä¸ for...of
ä¸åï¼for...in
使ç¨å±æ§æä¸¾è䏿¯æ°ç»çè¿ä»£å¨ãå¨ç¨çæ°ç»ä¸ï¼for...of
ä¼è®¿é®ç©ºæ§½ï¼ä½ for...in
ä¸ä¼è®¿é®ç©ºæ§½ã
æå¥½ä½¿ç¨å¸¦ææ°å¼ç´¢å¼ç for
循ç¯ãArray.prototype.forEach()
æ for...of
循ç¯ï¼å 为å®ä»¬ä¼å°ç´¢å¼ä½ä¸ºæ°åè䏿¯å符串è¿åï¼å¹¶ä¸è¿ä¼é¿å
éç´¢å¼å±æ§çå¹²æ°ã
å¦æä½ åªæ³è¿ä»£å¯¹è±¡æ¬èº«ç屿§ï¼è䏿¯å®çååï¼ä½ å¯ä»¥ä½¿ç¨ä»¥ä¸ææ¯ä¹ä¸ï¼
Object.keys
ä¼è¿åä¸ä¸ªå
嫿æå¯æä¸¾çèªæåç¬¦ä¸²å±æ§çæ°ç»ï¼è Object.getOwnPropertyNames
åä¼å
嫿æå±æ§ï¼å
æ¬ä¸å¯æä¸¾çã
è®¸å¤ JavaScript 飿 ¼æååä»£ç æ£æ¥å·¥å
·å»ºè®®é¿å
ä½¿ç¨ for...in
循ç¯ï¼å 为å®ä¼éåæ´ä¸ªååé¾ï¼è¿å¾å°æ¯æä»¬æ³è¦çï¼å¹¶ä¸å¯è½ä¼ä¸æ´å¸¸ç¨ç for...of
å¾ªç¯æ··æ·ãfor...in
å¾ªç¯æå¸¸ç¨äºè°è¯ç®çï¼å®æ¯ä¸ç§ç®åçæ¹å¼æ¥æ£æ¥å¯¹è±¡ç屿§ï¼éè¿åæ§å¶å°è¾åºæå
¶ä»æ¹å¼ï¼ãå¨å¯¹è±¡è¢«ç¨ä½ä¸´æ¶é®å¼å¯¹çæ
åµä¸ï¼for...in
循ç¯å¯ä»¥æ£æ¥è¿äºé®ä¸æ¯å¦å卿æç¹å®å¼çé®ã
ä¸é¢ç for...in
循ç¯è¿ä»£å¯¹è±¡ææå¯æä¸¾çé符å·å±æ§ï¼å¹¶è¾åºå±æ§åå对åºå¼çå符串ã
const obj = { a: 1, b: 2, c: 3 };
for (const prop in obj) {
console.log(`obj.${prop} = ${obj[prop]}`);
}
// è¾åºï¼
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
è¿ä»£èªæå±æ§
ä¸é¢ç彿°å±ç¤ºäº Object.hasOwn()
çç¨æ³ï¼ç»§æ¿ç屿§ä¸ä¼æ¾ç¤ºã
const triangle = { a: 1, b: 2, c: 3 };
function ColoredTriangle() {
this.color = "红è²";
}
ColoredTriangle.prototype = triangle;
const obj = new ColoredTriangle();
for (const prop in obj) {
if (Object.hasOwn(obj, prop)) {
console.log(`obj.${prop} = ${obj[prop]}`);
}
}
// è¾åºï¼
// "obj.color = 红è²"
å¹¶åä¿®æ¹
è¦åï¼ ä½ ä¸åºè¯¥èªå·±ç¼å类似ç代ç ãè¿éä»
ä»
å±ç¤ºäº for...in
å¨æäºæç«¯æ
åµä¸çè¡ä¸ºã
å¨è¿ä»£æé´æ·»å å°å½å对象ç屿§æ°¸è¿ä¸ä¼è¢«è®¿é®ï¼
const obj = { a: 1, b: 2 };
for (const prop in obj) {
console.log(`obj.${prop} = ${obj[prop]}`);
obj.c = 3;
}
// è¾åºï¼
// obj.a = 1
// obj.b = 2
被é®è½ï¼shadowedï¼ç屿§åªä¼è¢«è®¿é®ä¸æ¬¡ï¼
const proto = { a: 1 };
const obj = { __proto__: proto, a: 2 };
for (const prop in obj) {
console.log(`obj.${prop} = ${obj[prop]}`);
}
// è¾åºï¼
// obj.a = 2
Object.defineProperty(obj, "a", { enumerable: false });
for (const prop in obj) {
console.log(`obj.${prop} = ${obj[prop]}`);
}
// 没æè¾åºï¼å 为第ä¸ä¸ªâaâ屿§å·²ç»è¢«è®¿é®è¿ï¼å¹¶ä¸æ¯ä¸å¯æä¸¾çã
æ¤å¤ï¼è¯·èè以䏿 åµï¼å³è¡ä¸ºæ¯æªæå®çï¼å¹¶ä¸å®ç°å¾å¾å离è§å®çç®æ³ï¼
å¨è¿ä»£è¿ç¨ä¸æ´æ¹ååé¾ï¼
const obj = { a: 1, b: 2 };
for (const prop in obj) {
console.log(`obj.${prop} = ${obj[prop]}`);
Object.setPrototypeOf(obj, { c: 3 });
}
å¨è¿ä»£è¿ç¨ä¸å é¤å±æ§ï¼
const obj = { a: 1, b: 2, c: 3 };
// å¨å±æ§è¢«è®¿é®åå é¤å®
for (const prop in obj) {
console.log(`obj.${prop} = ${obj[prop]}`);
delete obj.c;
}
const obj2 = { a: 1, b: 2, c: 3 };
// å¨å±æ§è¢«è®¿é®åå é¤å®
for (const prop in obj2) {
console.log(`obj2.${prop} = ${obj2[prop]}`);
delete obj2.a;
}
å¨è¿ä»£è¿ç¨ä¸ååå龿·»å 坿䏾屿§ï¼
const proto = {};
const obj = { __proto__: proto, a: 1, b: 2 };
for (const prop in obj) {
console.log(`obj.${prop} = ${obj[prop]}`);
proto.c = 3;
}
å¨è¿ä»£è¿ç¨ä¸ä¿®æ¹å±æ§ç坿䏾æ§ï¼
const obj = { a: 1, b: 2, c: 3 };
for (const prop in obj) {
console.log(`obj.${prop} = ${obj[prop]}`);
Object.defineProperty(obj, "c", { enumerable: false });
}
è§è æµè§å¨å
¼å®¹æ§ åè§
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4