éå æ¯ç±æç»èµ·æ¥ï¼å°éçï¼ç彿°å彿°å¨å´ç¶æï¼è¯æ³ç¯å¢ï¼çå¼ç¨ç»åèæãæ¢è¨ä¹ï¼éå è®©å½æ°è½è®¿é®å®çå¤é¨ä½ç¨åãå¨ JavaScript ä¸ï¼éå ä¼éç彿°çå建èåæ¶å建ã
è¯æ³ä½ç¨å注æä¸é¢ç示ä¾ä»£ç ï¼
function init() {
var name = "Mozilla"; // name æ¯ init å建çå±é¨åé
function displayName() {
// displayName() æ¯å
é¨å½æ°ï¼å®å建äºä¸ä¸ªéå
console.log(name); // 使ç¨å¨ç¶å½æ°ä¸å£°æçåé
}
displayName();
}
init();
init()
å建äºä¸ä¸ªå为 name
çå±é¨åéåä¸ä¸ªå为 displayName()
ç彿°ãdisplayName()
æ¯å¨ init()
å
å®ä¹çå
é¨å½æ°ï¼å¹¶ä¸ä»
å¨ init()
彿°ç彿°ä½å
å¯ç¨ã请注æï¼displayName()
没æèªå·±çå±é¨åéãç¶èï¼å 为å
é¨å½æ°è½è®¿é®å¤é¨ä½ç¨åçåéï¼æä»¥ displayName()
è½è®¿é®å¨ init()
ç¶å½æ°ä¸å£°æç name
åéã
使ç¨è¿ä¸ª JSFiddle 龿¥è¿è¡è¯¥ä»£ç ååç°ï¼displayName()
彿°å
ç console.log()
æåæ¾ç¤ºäºå¨å
¶ç¶å½æ°ä¸å£°æç name
åéçå¼ãè¿æ¯ä¸ä¸ªè¯æ³ä½ç¨åç示ä¾ï¼å®æè¿°äºè§£æå¨å¨å½æ°åµå¥æ¶å¦ä½è§£æåéåãè¯æ³ä¸è¯æ¯æè¯æ³ä½ç¨åä½¿ç¨æºä»£ç å
åé声æçä½ç½®å³å®åéå¯ç¨çä½ç½®ãåµå¥å½æ°è½è®¿é®å¨å
¶å¤é¨ä½ç¨åä¸å£°æçåéã
ä¸ç´ä»¥æ¥ï¼ES 6 ä¹åï¼ï¼JavaScript åéä»
æä¸¤ç§ç±»åçä½ç¨åï¼å½æ°ä½ç¨ååå
¨å±ä½ç¨åãç¨ var
声æçåéè¦ä¹å±äºå½æ°ä½ç¨åè¦ä¹å±äºå
¨å±ä½ç¨åï¼è¿åå³äºå鿝å¨å½æ°å
声æçè¿æ¯å¨å½æ°å¤å£°æçãè±æ¬å·åä¸ä¸º var
å建ä½ç¨å让人æç¹é¾ä»¥ææ¸ï¼
if (Math.random() > 0.5) {
var x = 1;
} else {
var x = 2;
}
console.log(x);
对å¦ä¹ è¿åå建ä½ç¨åçè¯è¨ï¼å¦ï¼CãJavaï¼çå¼åè
èè¨ï¼ä¸é¢ç代ç åºè¯¥å¨ console.log
è¿ä¸è¡æåºä¸ä¸ªé误ï¼å 为æä»¬å¨ä»»æä¸ä¸ªåç x
ä½ç¨åçå¤è¾¹ãç¶èï¼å 为åä¸ä¼ä¸º var
å建ä½ç¨åï¼æä»¥è¿éç var
è¯å¥å®é
ä¸åå»ºçæ¯å
¨å±åéãä¸é¢ä¹ä»ç»äºä¸ä¸ªå®é
çä¾åï¼è§£éäºåéå
ç»åæ¶ï¼è¿ä¸ªç¹æ§å¦ä½å¯¼è´å®é
é®é¢ã
å¨ ES 6 ä¸ï¼JavaScript å¼å
¥äº let
å const
声æï¼è¿äºå£°æå´ç»å¨è¯¸å¦ææ¶æ§æ»åºçå
¶ä»ä¸è¥¿ä¹ä¸ï¼ä¼å建å级ä½ç¨åçåéã
if (Math.random() > 0.5) {
const x = 1;
} else {
const x = 2;
}
console.log(x); // ReferenceError: x is not defined
仿¬è´¨ä¸è¯´ï¼å¨ ES 6 ä¸ä»
å½ä½¿ç¨ let
æ const
声æåéæ¶ï¼åæä¼è®¤ä¸ºæ¯ä½ç¨åãæ¤å¤ï¼ES 6 å¼å
¥äºæ¨¡åï¼æ¨¡åå¼å
¥äºå¦ä¸ç§ä½ç¨åãéå
è½å¤æè·ææè¿äºä½ç¨åä¸çåéï¼ç¨åæä»¬ä¼ä»ç»è¿äºæ
å½¢ã
注æä¸é¢ç代ç 示ä¾ï¼
function makeFunc() {
const name = "Mozilla";
function displayName() {
console.log(name);
}
return displayName;
}
const myFunc = makeFunc();
myFunc();
è¿è¡è¿æ®µä»£ç çææåä¹å init()
彿°ç示ä¾å®å
¨ä¸æ ·ãå
¶ä¸ä¸åçå°æ¹ï¼ä¹æ¯æææçå°æ¹ï¼å¨äº displayName()
å
é¨å½æ°å¨æ§è¡åï¼ä»å¤é¨å½æ°è¿åã
第ä¸ç¼çä¸å»ï¼ä¹è®¸ä¸è½ç´è§å°çåºè¿æ®µä»£ç è½å¤æ£å¸¸è¿è¡ãå¨ä¸äºç¼ç¨è¯è¨ä¸ï¼å½æ°å
çå±é¨åéä»
åå¨äºå½æ°çæ§è¡æé´ã䏿¦ makeFunc()
æ§è¡å®æ¯ï¼ä½ å¯è½ä¼è®¤ä¸º name
åéå°ä¸è½å被访é®ãç¶èï¼å 为代ç 仿颿è¿è¡ï¼æä»¥å¨ JavaScript 䏿
嵿¾ç¶ä¸æ¤ä¸åã
åå å¨äºï¼JavaScript ä¸ç彿°å建äºéå
ã éå
æ¯ç±å½æ°ä»¥å彿°å£°ææå¨çè¯æ³ç¯å¢ç»åèæçã该ç¯å¢å
å«äºè¿ä¸ªéå
å建æ¶ä½ç¨åå
çä»»ä½å±é¨åéã卿¬ä¾ä¸ï¼myFunc
æ¯æ§è¡ makeFunc
æ¶å建ç displayName
彿°çå®ä¾å¼ç¨ãdisplayName
çå®ä¾æä¸ä¸ªå®çè¯æ³ç¯å¢çå¼ç¨ï¼è name
åéä½äºè¿ä¸ªè¯æ³ç¯å¢ä¸ãå æ¤ï¼å½ myFunc
被è°ç¨æ¶ï¼name
åéä»ç¶å¯ç¨ï¼å
¶å¼ Mozilla
å°±è¢«ä¼ éå° console.log
ä¸ã
ä¸é¢æ¯ä¸ä¸ªç¨å¾®æ´æææç示ä¾ââä¸ä¸ª makeAdder
彿°ï¼
function makeAdder(x) {
return function (y) {
return x + y;
};
}
const add5 = makeAdder(5);
const add10 = makeAdder(10);
console.log(add5(2)); // 7
console.log(add10(2)); // 12
å¨è¿ä¸ªç¤ºä¾ä¸ï¼æä»¬å®ä¹äº makeAdder(x)
彿°ï¼å®æ¥åä¸ä¸ª x
åæ°ï¼å¹¶è¿åä¸ä¸ªæ°å½æ°ãè¿åç彿°æ¥åä¸ä¸ª y
åæ°ï¼å¹¶è¿å x
å y
çåã
仿¬è´¨ä¸è®²ï¼makeAdder
æ¯ä¸ä¸ªå½æ°å·¥åãå®å建äºå°æå®çå¼åå®çåæ°ç¸å æ±åç彿°ãå¨ä¸é¢ç示ä¾ä¸ï¼å½æ°å·¥åå建äºä¸¤ä¸ªæ°å½æ°ââä¸ä¸ªå°å
¶åæ°å 5 æ±åï¼å¦ä¸ä¸ªå°å
¶åæ°å 10 æ±åã
add5
å add10
é½å建äºéå
ãå®ä»¬å
±äº«ç¸åç彿°ä½å®ä¹ï¼ä½æ¯ä¿åäºä¸åçè¯æ³ç¯å¢ãå¨ add5
çè¯æ³ç¯å¢ä¸ï¼x
为 5ï¼èå¨ add10
çè¯æ³ç¯å¢ä¸ï¼x
å为 10ã
éå 徿ç¨ï¼å 为å®è½å°æ°æ®ï¼è¯æ³ç¯å¢ï¼ä¸è¿ç®æ°æ®ç彿°å ³èèµ·æ¥ãè¿æ¾ç¶ç±»ä¼¼äºé¢å对象ç¼ç¨ãå¨é¢å对象ç¼ç¨ä¸ï¼å¯¹è±¡è½å°æ°æ®ï¼å¯¹è±¡ç屿§ï¼ä¸ä¸ä¸ªæè å¤ä¸ªæ¹æ³å ³èèµ·æ¥ã
å æ¤ï¼å¨ä½ é常使ç¨åªæä¸ä¸ªæ¹æ³ç对象çå°æ¹ï¼é½å¯ä»¥ä½¿ç¨éå ã
å¨ Web ä¸ï¼ä½ æ³è¦è¿æ ·åçæ åµç¹å«å¸¸è§ãå¨å端 JavaScript ä¸ä¹¦åç大é¨å代ç 齿¯åºäºäºä»¶çãä½ å®ä¹æç§è¡ä¸ºï¼ç¶åå°å ¶æ·»å å°ç±ç¨æ·è§¦åçäºä»¶ä¸ï¼æ¯å¦ç¹å»æè æé®ï¼ãä»£ç æ·»å 为åè°ï¼å¨äºä»¶ååºä¸æ§è¡çä¸ä¸ªå½æ°ï¼ã
ä¾å¦ï¼å设æä»¬æ³å¨é¡µé¢ä¸æ·»å ä¸äºå¯ä»¥è°æ´åå·çæé®ãä¸ç§æ¹æ³æ¯æå® body
å
ç´ ç font-sizeï¼åç´ åä½ï¼ï¼ç¶å使ç¨ç¸å¯¹ç em
åä½è®¾ç½®é¡µé¢ä¸å
¶ä»å
ç´ ï¼ä¾å¦ headerï¼çåå·ï¼
body {
font-family: Helvetica, Arial, sans-serif;
font-size: 12px;
}
h1 {
font-size: 1.5em;
}
h2 {
font-size: 1.2em;
}
è¿ä¸ªåå·è°æ´æé®è½ä¿®æ¹ body
å
ç´ ç font-size
屿§ï¼å¹¶ä¸å 为使ç¨çæ¯ç¸å¯¹åä½ï¼é¡µé¢ä¸çå
¶ä»å
ç´ ä¹ä¼ç¸åºå°è°æ´ã
以䏿¯ JavaScriptï¼
function makeSizer(size) {
return function () {
document.body.style.fontSize = `${size}px`;
};
}
const size12 = makeSizer(12);
const size14 = makeSizer(14);
const size16 = makeSizer(16);
size12
ãsize14
å size16
ä¸ä¸ªå½æ°å°å嫿 body
çåå·è°æ´ä¸º 12ã14ã16 åç´ ãä½ å¯ä»¥å°å®ä»¬æ·»å å°æé®ä¸ï¼å°±åä¸é¢ç代ç 示ä¾é£æ ·ã
document.getElementById("size-12").onclick = size12;
document.getElementById("size-14").onclick = size14;
document.getElementById("size-16").onclick = size16;
<button id="size-12">12</button>
<button id="size-14">14</button>
<button id="size-16">16</button>
ç¨ JSFiddle è¿è¡è¿æ®µä»£ç ã
ç¨éå æ¨¡æç§ææ¹æ³å Java è¿æ ·çç¼ç¨è¯è¨æ¯æå°æ¹æ³å£°æä¸ºç§æçï¼å³å®ä»¬åªè½è¢«åä¸ä¸ªç±»ä¸çå ¶ä»æ¹æ³è°ç¨ã
没æç±»ä¹åç JavaScript 没æå£°æç§ææ¹æ³çåçæ¹å¼ï¼ä½ä½¿ç¨éå æ¨¡æç§ææ¹æ³æ¯å¯è½çãç§ææ¹æ³ä¸ä» æå©äºéå¶ä»£ç 访é®ï¼è¿ä¸ºç®¡çå ¨å±å½åç©ºé´æä¾å¼ºå¤§è½åã
ä¸é¢ç代ç å±ç¤ºäºå¦ä½ä½¿ç¨éå å®ä¹è½è®¿é®ç§æå½æ°åç§æåéçå ¬å ±å½æ°ã注æï¼è¿äºéå éµå¾ªæ¨¡å设计模å¼ã
const counter = (function () {
let privateCounter = 0;
function changeBy(val) {
privateCounter += val;
}
return {
increment() {
changeBy(1);
},
decrement() {
changeBy(-1);
},
value() {
return privateCounter;
},
};
})();
console.log(counter.value()); // 0
counter.increment();
counter.increment();
console.log(counter.value()); // 2
counter.decrement();
console.log(counter.value()); // 1
å¨ä¹åç示ä¾ä¸ï¼æ¯ä¸ªéå
齿å®èªå·±çè¯æ³ç¯å¢ãèè¿æ¬¡ï¼åªå建äºä¸ä¸ªç±ä¸ä¸ªå½æ°å
±äº«çè¯æ³ç¯å¢ï¼Counter.increment
ãCounter.decrement
å Counter.value
ã
该å
±äº«çè¯æ³ç¯å¢å¨ç«å³æ§è¡ï¼ä¹ç§°ä½ IIFEï¼çå¿å彿°ä½ä¸å建ãè¿ä¸ªè¯æ³ç¯å¢å
å«ä¸¤ä¸ªç§æé¡¹ï¼ä¸ä¸ªå为 privateCounter
çåéåä¸ä¸ªå为 changeBy
ç彿°ãä½ ä¸è½ä»è¿ä¸ªå¿å彿°å¤é¨è®¿é®ç§ææåãç¸åï¼ä½ é´æ¥å°éè¿å¿å彿°è¿åçä¸ä¸ªå
Œ
±å½æ°è¿è¡è®¿é®ã
è¿ä¸ä¸ªå
Œ
±å½æ°å建äºå
±äº«ç¸åè¯æ³ç¯å¢çéå
ãå¤äº JavaScript çè¯æ³ä½ç¨åï¼å®ä»¬æ¯ä¸ªé½è½è®¿é® privateCounter
åéå changeBy
彿°ã
const makeCounter = function () {
let privateCounter = 0;
function changeBy(val) {
privateCounter += val;
}
return {
increment() {
changeBy(1);
},
decrement() {
changeBy(-1);
},
value() {
return privateCounter;
},
};
};
const counter1 = makeCounter();
const counter2 = makeCounter();
console.log(counter1.value()); // 0.
counter1.increment();
counter1.increment();
console.log(counter1.value()); // 2.
counter1.decrement();
console.log(counter1.value()); // 1.
console.log(counter2.value()); // 0.
请注æä¸¤ä¸ª counter æ¯å¦ä½ç»´æ¤å®ä»¬åèªçç¬ç«æ§çãæ¯ä¸ªéå
éè¿å®èªå·±çéå
å¼ç¨ä¸åçæ¬ç privateCounter
åéãæ¯æ¬¡è°ç¨å
¶ä¸ä¸ä¸ª counter æ¶ï¼æ¹åè¿ä¸ªåéçå¼ä¼æ¹åå®çè¯æ³ç¯å¢ãç¶è对ä¸ä¸ªéå
ä¸çåéè¿è¡ä¿®æ¹ï¼ä¸ä¼å½±åå°å¦å¤ä¸ä¸ªéå
ä¸çåéå¼ã
夿³¨ï¼ 以è¿ç§æ¹å¼ä½¿ç¨éå å¾å°äºé常åé¢å对象ç¼ç¨ç¸å ³èç好å¤ãç¹å«æ¯æ°æ®éèåå°è£ ã
éå ä½ç¨åé¾åµå¥å½æ°è½è®¿é®çå¤é¨å½æ°ä½ç¨åå æ¬å¤é¨å½æ°å å´çä½ç¨åââ髿å°åå»ºä¸æ¡å½æ°ä½ç¨åé¾ã为äºè§£éè¿ä¸ç¹ï¼æ³¨æä¸é¢ç示ä¾ä»£ç ã
// å
¨å±ä½ç¨å
const e = 10;
function sum(a) {
return function (b) {
return function (c) {
// å¤é¨å½æ°ä½ç¨å
return function (d) {
// å±é¨ä½ç¨å
return a + b + c + d + e;
};
};
};
}
console.log(sum(1)(2)(3)(4)); // 20
ä½ ä¹å¯ä»¥ä¸ç¨å¿å彿°ï¼
// å
¨å±ä½ç¨å
const e = 10;
function sum(a) {
return function sum2(b) {
return function sum3(c) {
// å¤é¨å½æ°ä½ç¨å
return function sum4(d) {
// å±é¨ä½ç¨å
return a + b + c + d + e;
};
};
};
}
const sum2 = sum(1);
const sum3 = sum2(2);
const sum4 = sum3(3);
const result = sum4(4);
console.log(result); // 20
å¨ä¸é¢ç示ä¾ä¸ï¼æä¸ç³»åçåµå¥å½æ°ï¼ææçåµå¥å½æ°é½è½è®¿é®å¤é¨å½æ°çä½ç¨åãå¨è¿ä¸ªä¸ä¸æä¸ï¼æä»¬è¯´éå è½è®¿é®å ¨é¨çå¤é¨ä½ç¨åã
éå
ä¹è½æè·åä½ç¨å忍¡åä½ç¨åä¸çåéãä¾å¦ï¼ä¸é¢ç示ä¾å建äºå级ä½ç¨ååé y
çéå
ï¼
function outer() {
let getY;
{
const y = 6;
getY = () => y;
}
console.log(typeof y); // undefined
console.log(getY()); // 6
}
outer();
模åä½ç¨åçéå æ´æè¶£ã
// myModule.js
let x = 5;
export const getX = () => x;
export const setX = (val) => {
x = val;
};
è¿éï¼æ¨¡å导åºä¸å¯¹ getter-setter 彿°ï¼å®ä»¬å¨æ¨¡åä½ç¨ååé x
ä¸å建äºéå
ãå³ä¾¿å¨å
¶ä»æ¨¡åä¸ä¸è½ç´æ¥è®¿é® x
çæ
åµä¸ï¼ä¹è½éè¿å½æ°å¯¹ x
è¿è¡è¯»åã
import { getX, setX } from "./myModule.js";
console.log(getX()); // 5
setX(6);
console.log(getX()); // 6
ä¹è½å¨å¯¼å ¥çå¼ä¸å建éå ï¼è¿è®¤ä¸ºæ¯å®æ¶ç»å®ï¼å 为å½åå§å¼ååæ¶ï¼å¯¼å ¥å¼ä¹ç¸åºå°ååã
// myModule.js
export let x = 1;
export const setX = (val) => {
x = val;
};
// closureCreator.js
import { x } from "./myModule.js";
export const getX = () => x; // å¨å¯¼å
¥å¼ä¸å建ä¸ä¸ªå®æ¶ç»å®
import { getX } from "./closureCreator.js";
import { setX } from "./myModule.js";
console.log(getX()); // 1
setX(2);
console.log(getX()); // 2
å¨å¾ªç¯ä¸å建éå
ï¼ä¸ä¸ªå¸¸è§é误
å¨å¼å
¥ let
å
³é®åä¹åï¼å½ä½ å¨å¾ªç¯ä¸å建éå
æ¶ï¼ä¼åçä¸ä¸ªå¸¸è§çéå
é®é¢ï¼æ³¨æä¸é¢ç代ç 示ä¾ï¼
<p id="help">Helpful notes will appear here</p>
<p>Email: <input type="text" id="email" name="email" /></p>
<p>Name: <input type="text" id="name" name="name" /></p>
<p>Age: <input type="text" id="age" name="age" /></p>
function showHelp(help) {
document.getElementById("help").textContent = help;
}
function setupHelp() {
var helpText = [
{ id: "email", help: "Your email address" },
{ id: "name", help: "Your full name" },
{ id: "age", help: "Your age (you must be over 16)" },
];
for (var i = 0; i < helpText.length; i++) {
// 罪éç¥¸é¦æ¯å¨è¿ä¸è¡ä½¿ç¨ç `var`
var item = helpText[i];
document.getElementById(item.id).onfocus = function () {
showHelp(item.help);
};
}
}
setupHelp();
è¯çå¨ JSFiddle ä¸è¿è¡è¯¥ä»£ç ã
helpText
æ°ç»ä¸å®ä¹äºä¸ä¸ªæç¨çæç¤ºä¿¡æ¯ï¼æ¯ä¸ªé½ä¸ææ¡£ä¸ input åæ®µç ID å
³èã循ç¯éåè¿äºå®ä¹ï¼å° onfocus
äºä»¶ä¸æ¾ç¤ºå¸®å©ä¿¡æ¯çæ¹æ³è¿è¡å
³èã
å¦æä½ è¯çè¿è¡è¿æ®µä»£ç ï¼ä½ ä¼åç°å®æ²¡æè¾¾å°é¢æçææãæ è®ºä½ èç¦å¨é£ä¸ªå段ä¸ï¼æ¾ç¤ºç齿¯å ³äºå¹´é¾çä¿¡æ¯ã
åå æ¯èµå¼ç» onfocus
ç彿°å建äºéå
ãè¿äºéå
æ¯ç±å½æ°å®ä¹åä» setupHelp
彿°ä½ç¨å䏿è·çç¯å¢æç»æçãè¿ä¸ä¸ªéå
å¨å¾ªç¯ä¸å建ï¼ä½æ¯ä¸ªé½å
±äº«åä¸ä¸ªè¯æ³ç¯å¢ï¼è¿ä¸ªç¯å¢æä¸ä¸ªä¸ææ¹åå¼çåéï¼item
ï¼ãè¿æ¯å 为 item
åéç¨ var
声æï¼å¹¶ç±äºå£°ææåï¼å æ¤æ¥æå½æ°ä½ç¨åãè item.help
ç弿¯å¨ onfocus
åè°æ§è¡æ¶å³å®ãå 为循ç¯å¨äºä»¶è§¦åä¹åæ©å·²æ§è¡å®æ¯ï¼æä»¥ item
åé对象ï¼ç±ä¸ä¸ªéå
å
±äº«ï¼å·²ç»æåäº helpText
çæåä¸é¡¹ã
è¿ä¸ªä¾åçä¸ä¸ªè§£å³æ¹æ¡å°±æ¯ä½¿ç¨æ´å¤çéå ï¼ç¹å«æ¯ä½¿ç¨åé¢æè¿°ç彿°å·¥åï¼
function showHelp(help) {
document.getElementById("help").textContent = help;
}
function makeHelpCallback(help) {
return function () {
showHelp(help);
};
}
function setupHelp() {
var helpText = [
{ id: "email", help: "Your email address" },
{ id: "name", help: "Your full name" },
{ id: "age", help: "Your age (you must be over 16)" },
];
for (var i = 0; i < helpText.length; i++) {
var item = helpText[i];
document.getElementById(item.id).onfocus = makeHelpCallback(item.help);
}
}
setupHelp();
使ç¨è¿ä¸ª JSFiddle 龿¥è¿è¡è¯¥ä»£ç ã
è¿æ¬¡ç¬¦å颿ãåè°ä¸åé½å
±äº«åä¸ä¸ªè¯æ³ç¯å¢ï¼makeHelpCallback
彿°ä¸ºæ¯ä¸ä¸ªåè°å建äºä¸ä¸ªæ°çè¯æ³ç¯å¢ï¼å¨æ¯ä¸ªæ°çè¯æ³ç¯å¢ä¸ï¼help
æå helpText
æ°ç»ä¸å¯¹åºçå符串ã
å¦ä¸ç§æ¹æ³æ¯ä½¿ç¨å¿åéå ï¼
function showHelp(help) {
document.getElementById("help").textContent = help;
}
function setupHelp() {
var helpText = [
{ id: "email", help: "Your email address" },
{ id: "name", help: "Your full name" },
{ id: "age", help: "Your age (you must be over 16)" },
];
for (var i = 0; i < helpText.length; i++) {
(function () {
var item = helpText[i];
document.getElementById(item.id).onfocus = function () {
showHelp(item.help);
};
})(); // ç«å³å°äºä»¶çå¬å¨éçå°å½åç item å¼ï¼ä¿çå°æ¯æ¬¡è¿ä»£ï¼ã
}
}
setupHelp();
å¦æä½ ä¸æ³ä½¿ç¨è¿å¤çéå
ï¼ä½ å¯ä»¥ä½¿ç¨ let
æ const
å
³é®è¯ï¼
function showHelp(help) {
document.getElementById("help").textContent = help;
}
function setupHelp() {
const helpText = [
{ id: "email", help: "Your email address" },
{ id: "name", help: "Your full name" },
{ id: "age", help: "Your age (you must be over 16)" },
];
for (let i = 0; i < helpText.length; i++) {
const item = helpText[i];
document.getElementById(item.id).onfocus = () => {
showHelp(item.help);
};
}
}
setupHelp();
è¿ä¸ªç¤ºä¾ä½¿ç¨ const
è䏿¯ var
ï¼å æ¤æ¯ä¸ªéå
ç»å®çæ¯åä½ç¨ååéï¼è¿æå³çä¸åéè¦é¢å¤çéå
ã
å¦ä¸ä¸ªå¯éæ¹æ¡æ¯ä½¿ç¨ forEach()
éå helpText
æ°ç»å¹¶ç»æ¯ä¸ä¸ª <input>
æ·»å ä¸ä¸ªçå¬å¨ï¼å¦ä¸æç¤ºï¼
function showHelp(help) {
document.getElementById("help").textContent = help;
}
function setupHelp() {
var helpText = [
{ id: "email", help: "Your email address" },
{ id: "name", help: "Your full name" },
{ id: "age", help: "Your age (you must be over 16)" },
];
helpText.forEach(function (text) {
document.getElementById(text.id).onfocus = function () {
showHelp(text.help);
};
});
}
setupHelp();
æ§è½èé
æ£å¦å颿åçï¼æ¯ä¸ªå½æ°å®ä¾ç®¡ççå®èªå·±çä½ç¨ååéå ãå æ¤ï¼å¦æç¹å®çä»»å¡ä¸éè¦ä½¿ç¨éå ï¼å¨å ¶ä»å½æ°å ä¸å¿ è¦å°åå»ºå½æ°æ¯ä¸ææºçï¼å 为å¨å¤çé度åå åæ¶è两æ¹é¢å°å¯¹èæ¬æ§è½äº§çè´é¢å½±åã
ä¾å¦ï¼å¨å建ä¸ä¸ªæ°å¯¹è±¡æç±»æ¶ï¼æ¹æ³é常åºè¯¥å ³èå°å¯¹è±¡çååä¸ï¼è䏿¯å®ä¹å°å¯¹è±¡çæé 彿°ä¸ãçç±æ¯æ¯æ¬¡è°ç¨æé 彿°æ¶ï¼æ¹æ³é½ä¼éæ°èµå¼ï¼ä¹å°±æ¯æ¯æ¬¡å建对象æ¶ï¼ã
注æä¸é¢çä¾åï¼
function MyObject(name, message) {
this.name = name.toString();
this.message = message.toString();
this.getName = function () {
return this.name;
};
this.getMessage = function () {
return this.message;
};
}
å 为å¨ä¸é¢ç代ç ä¸å¹¶æ²¡æå©ç¨å°å¨è¿ä¸ªç¹æ®çå®ä¾ä¸ä½¿ç¨éå ç好å¤ï¼æä»¬åºè¯¥éåé¿å 使ç¨éå ï¼ä¿®æ¹å¦ä¸ï¼
function MyObject(name, message) {
this.name = name.toString();
this.message = message.toString();
}
MyObject.prototype = {
getName() {
return this.name;
},
getMessage() {
return this.message;
},
};
ç¶èï¼éæ°å®ä¹ååä¹ä¸æ¨èãä¸é¢çç¤ºä¾æ¯è¿½å å°å·²åå¨çååä¸ï¼
function MyObject(name, message) {
this.name = name.toString();
this.message = message.toString();
}
MyObject.prototype.getName = function () {
return this.name;
};
MyObject.prototype.getMessage = function () {
return this.message;
};
å¨åé¢ä¸¤ä¸ªç¤ºä¾ä¸ï¼ç»§æ¿çååç±ææçå¯¹è±¡å ±äº«ï¼å æ¤æ¹æ³å®ä¹ä¸éè¦åºç°å¨å¯¹è±¡å建ä¸ãåè§ç»§æ¿ä¸ååé¾äºè§£æ´å¤ã
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