æ£å¦æä»¬å¨ æ°æ®ç±»å ä¸ç« å¦å°çï¼JavaScript ä¸æå «ç§æ°æ®ç±»åãæä¸ç§åå§ç±»åï¼å 为å®ä»¬çå¼åªå å«ä¸ç§ä¸è¥¿ï¼åç¬¦ä¸²ï¼æ°åæè å ¶ä»ï¼ã
ç¸åï¼å¯¹è±¡åç¨æ¥åå¨é®å¼å¯¹åæ´å¤æçå®ä½ãå¨ JavaScript ä¸ï¼å¯¹è±¡å 乿¸éå°äºè¿é¨ç¼ç¨è¯è¨çæ¹æ¹é¢é¢ãæä»¥ï¼å¨æä»¬æ·±å ¥çè§£è¿é¨è¯è¨ä¹åï¼å¿ é¡»å ç解对象ã
æä»¬å¯ä»¥éè¿ä½¿ç¨å¸¦æå¯é 屿§å表 çè±æ¬å· {â¦} æ¥å建对象ãä¸ä¸ªå±æ§å°±æ¯ä¸ä¸ªé®å¼å¯¹ï¼âkey: valueâï¼ï¼å
¶ä¸é®ï¼keyï¼æ¯ä¸ä¸ªå符串ï¼ä¹å«å屿§åï¼ï¼å¼ï¼valueï¼å¯ä»¥æ¯ä»»ä½å¼ã
æä»¬å¯ä»¥æå¯¹è±¡æ³è±¡æä¸ä¸ªå¸¦æç¾åæä»¶çæä»¶æãæ¯ä¸æ¡æ°æ®é½åºäºé®ï¼keyï¼åå¨å¨æä»¶ä¸ãè¿æ ·æä»¬å°±å¯ä»¥å¾å®¹ææ ¹æ®æä»¶åï¼ä¹å°±æ¯âé®âï¼æ¥æ¾æä»¶ææ·»å /å 餿件äºã
æä»¬å¯ä»¥ç¨ä¸é¢ä¸¤ç§è¯æ³ä¸çä»»ä¸ç§æ¥å建ä¸ä¸ªç©ºç对象ï¼â空æåâï¼ï¼
let user = new Object(); // âæé 彿°â çè¯æ³
let user = {}; // âåé¢éâ çè¯æ³
éå¸¸ï¼æä»¬ç¨è±æ¬å·ãè¿ç§æ¹å¼æä»¬å«å åé¢éã
ææ¬å屿§
æä»¬å¯ä»¥å¨åå»ºå¯¹è±¡çæ¶åï¼ç«å³å°ä¸äºå±æ§ä»¥é®å¼å¯¹ç形弿¾å° {...} ä¸ã
let user = { // ä¸ä¸ªå¯¹è±¡
name: "John", // é® "name"ï¼å¼ "John"
age: 30 // é® "age"ï¼å¼ 30
};
屿§æé®ï¼æè
ä¹å¯ä»¥å«åâååâæâæ è¯ç¬¦âï¼ï¼ä½äºåå· ":" çåé¢ï¼å¼å¨åå·çå³è¾¹ã
å¨ user 对象ä¸ï¼æä¸¤ä¸ªå±æ§ï¼
- 第ä¸ä¸ªç鮿¯
"name"ï¼å¼æ¯"John"ã - 第äºä¸ªç鮿¯
"age"ï¼å¼æ¯30ã
çæç user 对象å¯ä»¥è¢«æ³è±¡ä¸ºä¸ä¸ªæ¾ç½®ç两个æ è®°æ ânameâ å âageâ çæä»¶çæåã
æä»¬å¯ä»¥éæ¶æ·»å ãå é¤å读åæä»¶ã
å¯ä»¥ä½¿ç¨ç¹ç¬¦å·è®¿é®å±æ§å¼ï¼
// 读åæä»¶ç屿§ï¼
alert( user.name ); // John
alert( user.age ); // 30
屿§çå¼å¯ä»¥æ¯ä»»æç±»åï¼è®©æä»¬å 个å¸å°ç±»åï¼
user.isAdmin = true;
æä»¬å¯ä»¥ç¨ delete æä½ç¬¦ç§»é¤å±æ§ï¼
delete user.age;
æä»¬ä¹å¯ä»¥ç¨å¤åè¯è¯æ¥ä½ä¸ºå±æ§åï¼ä½å¿ é¡»ç»å®ä»¬å ä¸å¼å·ï¼
let user = {
name: "John",
age: 30,
"likes birds": true // å¤è¯å±æ§åå¿
é¡»å å¼å·
};
å表ä¸çæåä¸ä¸ªå±æ§åºä»¥éå·ç»å°¾ï¼
let user = {
name: "John",
age: 30,
}
è¿å«åå°¾éï¼trailingï¼ææ¬æï¼hangingï¼éå·ãè¿æ ·ä¾¿äºæä»¬æ·»å ãå é¤åç§»å¨å±æ§ï¼å 为ææçè¡é½æ¯ç¸ä¼¼çã
æ¹æ¬å·
对äºå¤è¯å±æ§ï¼ç¹æä½å°±ä¸è½ç¨äºï¼
// è¿å°æç¤ºæè¯æ³é误
user.likes birds = true
JavaScript çè§£ä¸äºãå®è®¤ä¸ºæä»¬å¨å¤ç user.likesï¼ç¶åå¨éå°æå¤ç birds æ¶ç»åºäºè¯æ³é误ã
ç¹ç¬¦å·è¦æ± key æ¯ææçåéæ è¯ç¬¦ãè¿æå³çï¼ä¸å
å«ç©ºæ ¼ï¼ä¸ä»¥æ°åå¼å¤´ï¼ä¹ä¸å
å«ç¹æ®å符ï¼å
è®¸ä½¿ç¨ $ å _ï¼ã
æå¦ä¸ç§æ¹æ³ï¼å°±æ¯ä½¿ç¨æ¹æ¬å·ï¼å¯ç¨äºä»»ä½å符串ï¼
let user = {};
// 设置
user["likes birds"] = true;
// 读å
alert(user["likes birds"]); // true
// å é¤
delete user["likes birds"];
ç°å¨ä¸åé½å¯è¡äºãè¯·æ³¨ææ¹æ¬å·ä¸çåç¬¦ä¸²è¦æ¾å¨å¼å·ä¸ï¼åå¼å·æåå¼å·é½å¯ä»¥ã
æ¹æ¬å·åæ ·æä¾äºä¸ç§å¯ä»¥éè¿ä»»æè¡¨è¾¾å¼æ¥è·å屿§åçæ¹å¼ ââ 䏿æ¬å符串ä¸å ââ ä¾å¦ä¸é¢çåéï¼
let key = "likes birds";
// è· user["likes birds"] = true; 䏿 ·
user[key] = true;
å¨è¿éï¼åé key å¯ä»¥æ¯ç¨åºè¿è¡æ¶è®¡ç®å¾å°çï¼ä¹å¯ä»¥æ¯æ ¹æ®ç¨æ·çè¾å
¥å¾å°çãç¶åæä»¬å¯ä»¥ç¨å®æ¥è®¿é®å±æ§ãè¿ç»äºæä»¬å¾å¤§ççµæ´»æ§ã
ä¾å¦ï¼
let user = {
name: "John",
age: 30
};
let key = prompt("What do you want to know about the user?", "name");
// 访é®åé
alert( user[key] ); // Johnï¼å¦æè¾å
¥ "name"ï¼
ç¹ç¬¦å·ä¸è½ä»¥ç±»ä¼¼çæ¹å¼ä½¿ç¨ï¼
let user = {
name: "John",
age: 30
};
let key = "name";
alert( user.key ) // undefined
计ç®å±æ§
å½å建ä¸ä¸ªå¯¹è±¡æ¶ï¼æä»¬å¯ä»¥å¨å¯¹è±¡åé¢éä¸ä½¿ç¨æ¹æ¬å·ãè¿å«å 计ç®å±æ§ã
ä¾å¦ï¼
let fruit = prompt("Which fruit to buy?", "apple");
let bag = {
[fruit]: 5, // 屿§åæ¯ä» fruit åéä¸å¾å°ç
};
alert( bag.apple ); // 5 妿 fruit="apple"
计ç®å±æ§çå«ä¹å¾ç®åï¼[fruit] å«ä¹æ¯å±æ§ååºè¯¥ä» fruit åéä¸è·åã
æä»¥ï¼å¦æä¸ä¸ªç¨æ·è¾å
¥ "apple"ï¼bag å°å为 {apple: 5}ã
æ¬è´¨ä¸ï¼è¿è·ä¸é¢çè¯æ³ææç¸åï¼
let fruit = prompt("Which fruit to buy?", "apple");
let bag = {};
// ä» fruit åéä¸è·åå¼
bag[fruit] = 5;
â¦â¦ä½æ¯çèµ·æ¥æ´å¥½ã
æä»¬å¯ä»¥å¨æ¹æ¬å·ä¸ä½¿ç¨æ´å¤æç表达å¼ï¼
let fruit = 'apple';
let bag = {
[fruit + 'Computers']: 5 // bag.appleComputers = 5
};
æ¹æ¬å·æ¯ç¹ç¬¦å·æ´å¼ºå¤§ãå®å 许任ä½å±æ§åååéï¼ä½åèµ·æ¥ä¹æ´å 麻ç¦ã
æä»¥ï¼å¤§é¨åæ¶é´éï¼å½å±æ§åæ¯å·²ç¥ä¸ç®åçæ¶åï¼å°±ä½¿ç¨ç¹ç¬¦å·ã妿æä»¬éè¦ä¸äºæ´å¤æçå 容ï¼é£ä¹å°±ç¨æ¹æ¬å·ã
屿§å¼ç®å
å¨å®é å¼åä¸ï¼æä»¬é常ç¨å·²åå¨çåéå½å屿§åã
ä¾å¦ï¼
function makeUser(name, age) {
return {
name: name,
age: age,
// â¦â¦å
¶ä»ç屿§
};
}
let user = makeUser("John", 30);
alert(user.name); // John
å¨ä¸é¢çä¾åä¸ï¼å±æ§åè·åéå䏿 ·ãè¿ç§éè¿åéçæå±æ§çåºç¨åºæ¯å¾å¸¸è§ï¼å¨è¿æä¸ç§ç¹æ®ç 屿§å¼ç¼©å æ¹æ³ï¼ä½¿å±æ§åå徿´çã
å¯ä»¥ç¨ name æ¥ä»£æ¿ name:name åä¸é¢é£æ ·ï¼
function makeUser(name, age) {
return {
name, // ä¸ name: name ç¸å
age, // ä¸ age: age ç¸å
// ...
};
}
æä»¬å¯ä»¥æå±æ§åç®åæ¹å¼åæ£å¸¸æ¹å¼æ··ç¨ï¼
let user = {
name, // ä¸ name:name ç¸å
age: 30
};
屿§åç§°éå¶
æä»¬å·²ç»ç¥éï¼åéåä¸è½æ¯ç¼ç¨è¯è¨çæä¸ªä¿çåï¼å¦ âforâãâletâãâreturnâ çâ¦â¦
ä½å¯¹è±¡ç屿§åå¹¶ä¸åæ¤éå¶ï¼
// è¿äºå±æ§é½æ²¡é®é¢
let obj = {
for: 1,
let: 2,
return: 3
};
alert( obj.for + obj.let + obj.return ); // 6
ç®èè¨ä¹ï¼å±æ§å½å没æéå¶ã屿§åå¯ä»¥æ¯ä»»ä½å符串æè symbolï¼ä¸ç§ç¹æ®çæ å¿ç¬¦ç±»åï¼å°å¨åé¢ä»ç»ï¼ã
å ¶ä»ç±»åä¼è¢«èªå¨å°è½¬æ¢ä¸ºå符串ã
ä¾å¦ï¼å½æ°å 0 被ç¨ä½å¯¹è±¡ç屿§ç鮿¶ï¼ä¼è¢«è½¬æ¢ä¸ºå符串 "0"ï¼
let obj = {
0: "test" // çåäº "0": "test"
};
// é½ä¼è¾åºç¸åç屿§ï¼æ°å 0 被转为å符串 "0"ï¼
alert( obj["0"] ); // test
alert( obj[0] ); // test (ç¸åç屿§)
è¿éæä¸ªå°é·é±ï¼ä¸ä¸ªå为 __proto__ ç屿§ãæä»¬ä¸è½å°å®è®¾ç½®ä¸ºä¸ä¸ªé对象çå¼ï¼
let obj = {};
obj.__proto__ = 5; // åé
ä¸ä¸ªæ°å
alert(obj.__proto__); // [object Object] ââ å¼ä¸ºå¯¹è±¡ï¼ä¸é¢æç»æä¸å
æä»¬ä»ä»£ç ä¸å¯ä»¥çåºæ¥ï¼æå®èµå¼ä¸º 5 çæä½è¢«å¿½ç¥äºã
æä»¬å°å¨ åç»ç« è ä¸å¦ä¹ __proto__ çç¹æ®æ§è´¨ï¼å¹¶ç»åºäº è§£å³æ¤é®é¢çæ¹æ³ã
屿§å卿§æµè¯ï¼âinâ æä½ç¬¦
ç¸æ¯äºå ¶ä»è¯è¨ï¼JavaScript ç对象æä¸ä¸ªéè¦æ³¨æçç¹æ§ï¼è½å¤è¢«è®¿é®ä»»ä½å±æ§ãå³ä½¿å±æ§ä¸åå¨ä¹ä¸ä¼æ¥éï¼
读åä¸åå¨ç屿§åªä¼å¾å° undefinedãæä»¥æä»¬å¯ä»¥å¾å®¹æå°å¤æä¸ä¸ªå±æ§æ¯å¦åå¨ï¼
let user = {};
alert( user.noSuchProperty === undefined ); // true æææ¯æ²¡æè¿ä¸ªå±æ§
è¿éè¿æä¸ä¸ªç¹å«çï¼æ£æ¥å±æ§æ¯å¦åå¨çæä½ç¬¦ "in"ã
è¯æ³æ¯ï¼
"key" in object
ä¾å¦ï¼
let user = { name: "John", age: 30 };
alert( "age" in user ); // trueï¼user.age åå¨
alert( "blabla" in user ); // falseï¼user.blabla ä¸åå¨ã
请注æï¼in ç左边å¿
é¡»æ¯ å±æ§åãé常æ¯ä¸ä¸ªå¸¦å¼å·çå符串ã
妿æä»¬çç¥å¼å·ï¼å°±æå³ç左边æ¯ä¸ä¸ªåéï¼å®åºè¯¥å å«è¦å¤æçå®é 屿§åãä¾å¦ï¼
let user = { age: 30 };
let key = "age";
alert( key in user ); // trueï¼å±æ§ "age" åå¨
为ä½ä¼æ in è¿ç®ç¬¦å¢ï¼ä¸ undefined è¿è¡æ¯è¾æ¥å¤æè¿ä¸å¤åï¼
ç¡®å®ï¼å¤§é¨åæ
åµä¸ä¸ undefined è¿è¡æ¯è¾æ¥å¤æå°±å¯ä»¥äºã使ä¸ä¸ªä¾å¤æ
åµï¼è¿ç§æ¯å¯¹æ¹å¼ä¼æé®é¢ï¼ä½ in è¿ç®ç¬¦çå¤æç»æä»æ¯å¯¹çã
é£å°±æ¯å±æ§åå¨ï¼ä½åå¨ç弿¯ undefined çæ¶åï¼
let obj = {
test: undefined
};
alert( obj.test ); // æ¾ç¤º undefinedï¼æä»¥å±æ§ä¸åå¨ï¼
alert( "test" in obj ); // trueï¼å±æ§åå¨ï¼
å¨ä¸é¢ç代ç ä¸ï¼å±æ§ obj.test äºå®ä¸æ¯åå¨çï¼æä»¥ in æä½ç¬¦æ£æ¥éè¿ã
è¿ç§æ
åµå¾å°åçï¼å 为é常æ
åµä¸ä¸åºè¯¥ç»å¯¹è±¡èµå¼ undefinedãæä»¬é常ä¼ç¨ null æ¥è¡¨ç¤ºæªç¥çæè
空çå¼ãå æ¤ï¼in è¿ç®ç¬¦æ¯ä»£ç ä¸çç¹æ®æ¥å®¾ã
"for..in" 循ç¯
为äºéåä¸ä¸ªå¯¹è±¡çææé®ï¼keyï¼ï¼å¯ä»¥ä½¿ç¨ä¸ä¸ªç¹æ®å½¢å¼ç循ç¯ï¼for..inãè¿è·æä»¬å¨åé¢å¦å°ç for(;;) å¾ªç¯æ¯å®å
¨ä¸ä¸æ ·çä¸è¥¿ã
è¯æ³ï¼
for (key in object) {
// 对æ¤å¯¹è±¡å±æ§ä¸çæ¯ä¸ªé®æ§è¡ç代ç
}
ä¾å¦ï¼è®©æä»¬ååº user ææç屿§ï¼
let user = {
name: "John",
age: 30,
isAdmin: true
};
for (let key in user) {
// keys
alert( key ); // name, age, isAdmin
// 屿§é®çå¼
alert( user[key] ); // John, 30, true
}
注æï¼ææç âforâ ç»æä½é½å
许æä»¬å¨å¾ªç¯ä¸å®ä¹åéï¼åè¿éç let keyã
åæ ·ï¼æä»¬å¯ä»¥ç¨å
¶ä»å±æ§åæ¥æ¿ä»£ keyãä¾å¦ "for(let prop in obj)" ä¹å¾å¸¸ç¨ã
åå¯¹è±¡ä¸æ ·æåº
对象æé¡ºåºåï¼æ¢å¥è¯è¯´ï¼å¦ææä»¬éåä¸ä¸ªå¯¹è±¡ï¼æä»¬è·å屿§çé¡ºåºæ¯å屿§æ·»å æ¶ç顺åºç¸ååï¼è¿é è°±åï¼
ç®ççåçæ¯ï¼âæç¹å«ç顺åºâï¼æ´æ°å±æ§ä¼è¢«è¿è¡æåºï¼å ¶ä»å±æ§åæç §å建çé¡ºåºæ¾ç¤ºã详æ å¦ä¸ï¼
ä¾å¦ï¼è®©æä»¬èèä¸ä¸ªå¸¦æçµè¯å·ç ç对象ï¼
let codes = {
"49": "Germany",
"41": "Switzerland",
"44": "Great Britain",
// ..,
"1": "USA"
};
for(let code in codes) {
alert(code); // 1, 41, 44, 49
}
对象å¯ç¨äºé¢åç¨æ·ç建议é项å表ã妿æä»¬çç½ç«ä¸»è¦é¢åå¾·å½è§ä¼ï¼é£ä¹æä»¬å¯è½å¸æ 49 æå¨ç¬¬ä¸ã
ä½å¦ææä»¬æ§è¡ä»£ç ï¼ä¼çå°å®å ¨ä¸åçç°è±¡ï¼
- USA (1) æå¨äºæåé¢
- ç¶åæ¯ Switzerland (41) åå ¶å®ã
å 为è¿äºçµè¯å·ç æ¯æ´æ°ï¼æä»¥å®ä»¬ä»¥ååºæåãæä»¥æä»¬çå°çæ¯ 1, 41, 44, 49ã
è¿éçâæ´æ°å±æ§âæçæ¯ä¸ä¸ªå¯ä»¥å¨ä¸å任使´æ¹çæ åµä¸ä¸ä¸ä¸ªæ´æ°è¿è¡ç¸äºè½¬æ¢çå符串ã
æä»¥ï¼"49" æ¯ä¸ä¸ªæ´æ°å±æ§åï¼å 为æä»¬æå®è½¬æ¢ææ´æ°ï¼å转æ¢åæ¥ï¼å®è¿æ¯ä¸æ ·çã使¯ â+49â å â1.2â å°±ä¸è¡äºï¼
// Number(...) æ¾å¼è½¬æ¢ä¸ºæ°å
// Math.trunc æ¯å
建çå»é¤å°æ°é¨åçæ¹æ³ã
alert( String(Math.trunc(Number("49"))) ); // "49"ï¼ç¸åï¼æ´æ°å±æ§
alert( String(Math.trunc(Number("+49"))) ); // "49"ï¼ä¸åäº "+49" â 䏿¯æ´æ°å±æ§
alert( String(Math.trunc(Number("1.2"))) ); // "1"ï¼ä¸åäº "1.2" â 䏿¯æ´æ°å±æ§
â¦â¦æ¤å¤ï¼å¦æå±æ§å䏿¯æ´æ°ï¼é£å®ä»¬å°±æç §å建æ¶çé¡ºåºæ¥æåºï¼ä¾å¦ï¼
let user = {
name: "John",
surname: "Smith"
};
user.age = 25; // å¢å ä¸ä¸ª
// éæ´æ°å±æ§æ¯æç
§å建çé¡ºåºæ¥æåç
for (let prop in user) {
alert( prop ); // name, surname, age
}
æä»¥ï¼ä¸ºäºè§£å³çµè¯å·ç çé®é¢ï¼æä»¬å¯ä»¥ä½¿ç¨éæ´æ°å±æ§åæ¥ æ¬ºéª ç¨åºãåªéè¦ç»æ¯ä¸ªé®åå ä¸ä¸ªå å· "+" åç¼å°±è¡äºã
åè¿æ ·ï¼
let codes = {
"+49": "Germany",
"+41": "Switzerland",
"+44": "Great Britain",
// ..,
"+1": "USA"
};
for (let code in codes) {
alert( +code ); // 49, 41, 44, 1
}
ç°å¨è·é¢æ³ç䏿 ·äºã
æ»ç»
对象æ¯å ·æä¸äºç¹æ®ç¹æ§çå ³èæ°ç»ã
å®ä»¬åå¨å±æ§ï¼é®å¼å¯¹ï¼ï¼å ¶ä¸ï¼
- 屿§çé®å¿ é¡»æ¯å符串æè symbolï¼é常æ¯å符串ï¼ã
- å¼å¯ä»¥æ¯ä»»ä½ç±»åã
æä»¬å¯ä»¥ç¨ä¸é¢çæ¹æ³è®¿é®å±æ§ï¼
- ç¹ç¬¦å·:
obj.propertyã - æ¹æ¬å·
obj["property"]ï¼æ¹æ¬å·å 许ä»åéä¸è·åé®ï¼ä¾å¦obj[varWithKey]ã
å ¶ä»æä½ï¼
- å é¤å±æ§ï¼
delete obj.propã - æ£æ¥æ¯å¦åå¨ç»å®é®ç屿§ï¼
"key" in objã - éå对象ï¼
for(let key in obj)循ç¯ã
æä»¬å¨è¿ä¸ç« å¦ä¹ çå«åâæ®é对象ï¼plain objectï¼âï¼æè å°±å«å¯¹è±¡ã
JavaScript ä¸è¿æå¾å¤å ¶ä»ç±»åç对象ï¼
Arrayç¨äºåå¨æåºæ°æ®éåï¼Dateç¨äºå卿¶é´æ¥æï¼Errorç¨äºåå¨é误信æ¯ã- â¦â¦ççã
å®ä»¬æçåèªç¹å«çç¹æ§ï¼æä»¬å°å¨åé¢å¦ä¹ å°ãææ¶å大家ä¼è¯´âArray ç±»åâæâDate ç±»åâï¼ä½å ¶å®å®ä»¬å¹¶ä¸æ¯èªèº«æå±çç±»åï¼èæ¯å±äºä¸ä¸ªå¯¹è±¡ç±»åå³ âobjectâãå®ä»¬ä»¥ä¸åçæ¹å¼å¯¹ âobjectâ åäºä¸äºæ©å±ã
JavaScript ä¸ç对象é常强大ãè¿éæä»¬åªæ¥è§¦äºå ¶å°å±±ä¸è§ãå¨åé¢çç« èä¸ï¼æä»¬å°é¢ç¹ä½¿ç¨å¯¹è±¡è¿è¡ç¼ç¨ï¼å¹¶å¦ä¹ æ´å¤å ³äºå¯¹è±¡çç¥è¯ã
è¯è®º
<code>æ ç¾æå ¥åªæå 个è¯ç代ç ï¼æå ¥å¤è¡ä»£ç å¯ä»¥ä½¿ç¨<pre>æ ç¾ï¼å¯¹äºè¶ è¿ 10 è¡ç代ç ï¼å»ºè®®ä½ ä½¿ç¨æ²ç®±ï¼plnkrï¼JSBinï¼codepenâ¦ï¼