Baseline Widely available *
Function
对象æä¾äºç¨äºå¤ç彿°çæ¹æ³ãå¨ JavaScript ä¸ï¼æ¯ä¸ªå½æ°å®é
ä¸é½æ¯ä¸ä¸ª Function
对象ã
Function()
å建ä¸ä¸ªæ°ç Function
对象ãç´æ¥è°ç¨æ¤æé 彿°å¯ä»¥å¨æåå»ºå½æ°ï¼ä½ä¼éå°å eval()
类似çå®å
¨é®é¢åï¼ç¸å¯¹è¾å°çï¼æ§è½é®é¢ãç¶èï¼ä¸ eval()
ä¸åçæ¯ï¼Function
æé 彿°å建ç彿°åªè½å¨å
¨å±ä½ç¨åä¸è¿è¡ã
以ä¸å±æ§å®ä¹å¨ Function.prototype
ä¸ï¼å¹¶ä¸è¢«ææ Function
å®ä¾å
±äº«ã
Function.prototype.arguments
å·²å¼ç¨ éæ å
è¡¨ç¤ºä¼ éç»è¯¥å½æ°çåæ°ã对äºä¸¥æ ¼æ¨¡å¼ãç®å¤´å½æ°ã弿¥å½æ°åçæå¨å½æ°ï¼è®¿é® arguments
屿§ä¼æåº TypeError
å¼å¸¸ã请æ¹ä¸ºå¨å½æ°éå
å
ä½¿ç¨ arguments
对象ã
Function.prototype.caller
å·²å¼ç¨ éæ å
表示è°ç¨è¯¥å½æ°ç彿°ã对äºä¸¥æ ¼æ¨¡å¼ãç®å¤´å½æ°ã弿¥å½æ°åçæå¨å½æ°ï¼è®¿é® caller
屿§ä¼æåº TypeError
å¼å¸¸ã
Function.prototype.constructor
å建å®ä¾å¯¹è±¡çæé 彿°ãå¯¹äº Function
å®ä¾æ¥è¯´ï¼åå§å¼æ¯ Function
æé 彿°ã
以ä¸å±æ§æ¯æ¯ä¸ª Function
å®ä¾çèªæå±æ§ã
displayName
éæ å å¯é
彿°çæ¾ç¤ºåç§°ã
length
æå®å½æ°ææçåæ°ä¸ªæ°ã
name
彿°çåç§°ã
prototype
å¨ä½¿ç¨ function
ä½ä¸ºæé 彿°ä¸ new
è¿ç®ç¬¦ä¸èµ·ä½¿ç¨æ¶ï¼ç¨ä½æ°å¯¹è±¡çååã
Function.prototype.apply()
使ç¨ç»å®ç this
å¼åå¯éçåæ°æ°ç»ï¼æç±»æ°ç»å¯¹è±¡ï¼ä½ä¸ºåæ°æ¥è°ç¨ä¸ä¸ªå½æ°ã
Function.prototype.bind()
å建ä¸ä¸ªæ°ç彿°ï¼å¨è°ç¨æ¶ï¼å
¶ this
å
³é®å被设置为æä¾çå¼ï¼å¯éå°å¨è°ç¨æ°å½æ°æ¶å¨æä¾çåæ°ä¹åå ä¸ä¸ç³»åç»å®çåæ°ã
Function.prototype.call()
使ç¨ç»å®ç this
å¼åå¯éåæ°è°ç¨ä¸ä¸ªå½æ°ã
Function.prototype.toString()
è¿åè¡¨ç¤ºå½æ°æºä»£ç çå符串ãéåäº Object.prototype.toString
æ¹æ³ã
Function.prototype[Symbol.hasInstance]()
æå®ç¡®å®æé 彿°æ¯å¦å°å¯¹è±¡è¯å«ä¸ºå
¶å®ä¾çé»è®¤è¿ç¨ãç± instanceof
è¿ç®ç¬¦è°ç¨ã
ç± Function
æé 彿°å建ç彿°ä¸ä¼å建å½åç¯å¢çéå
ï¼å®ä»¬æ»æ¯è¢«å建äºå
¨å±ç¯å¢ï¼å æ¤å¨è¿è¡æ¶å®ä»¬åªè½è®¿é®å
¨å±åéåèªå·±çå±é¨åéï¼ä¸è½è®¿é®å®ä»¬è¢« Function
æé 彿°åå»ºæ¶æå¨çä½ç¨åçåéãè¿ä¸ç¹ä¸ä½¿ç¨ eval()
æ§è¡åå»ºå½æ°ç代ç ä¸åã
// ä½¿ç¨ `var` å建ä¸ä¸ªå
¨å±å±æ§
var x = 10;
function createFunction1() {
const x = 20;
return new Function("return x;"); // è¿ä¸ª `x` æçæ¯å
¨å± `x`
}
function createFunction2() {
const x = 20;
function f() {
return x; // è¿ä¸ª `x` æçæ¯ä¸é¢çå±é¨ `x`
}
return f;
}
const f1 = createFunction1();
console.log(f1()); // 10
const f2 = createFunction2();
console.log(f2()); // 20
è½ç¶è¿æ®µä»£ç å¯ä»¥å¨æµè§å¨ä¸æ£å¸¸è¿è¡ï¼ä½å¨ Node.js ä¸ f1()
ä¼äº§çä¸ä¸ªâæ¾ä¸å°åé x
âç ReferenceError
ãè¿æ¯å ä¸ºå¨ Node ä¸é¡¶çº§ä½ç¨å䏿¯å
¨å±ä½ç¨åï¼è x
å
¶å®æ¯å¨å½å模åçä½ç¨åä¹ä¸ã
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