Baseline Widely available
Function
å®ä¾ç name
æ°æ®å±æ§è¡¨ç¤ºå½æ°å¨åå»ºæ¶æå®çåç§°ï¼æè
妿彿°æ¯å¿å彿°ï¼ååç§°å¯ä»¥æ¯ anonymous
æ ''
ï¼ç©ºå符串ï¼ã
const func1 = function () {};
const object = {
func2: function () {},
};
console.log(func1.name);
// Expected output: "func1"
console.log(object.func2.name);
// Expected output: "func2"
å¼
ä¸ä¸ªå符串ã
å¯å å¦ å¯æä¸¾ å¦ å¯é ç½® æ¯å¤æ³¨ï¼ å¨éæ åçãES2015 ä¹åçå®ç°ä¸ï¼configurable
屿§ä¹æ¯ false
ã
彿°ç name
屿§å¯ç¨äºå¨è°è¯å·¥å
·æéè¯¯æ¶æ¯ä¸æ è¯è¯¥å½æ°ãå®å¯¹è¯è¨æ¬èº«æ²¡æä»»ä½æä¹ã
name
屿§æ¯åªè¯»çï¼ä¸è½ç¨èµå¼è¿ç®ç¬¦ä¿®æ¹ï¼
function someFunction() {}
someFunction.name = "otherFunction";
console.log(someFunction.name); // someFunction
æ³è¦æ¹åå®ï¼è¯·ä½¿ç¨ Object.defineProperty()
ã
name
屿§é常æ¯ä»å½æ°çå®ä¹æ¹å¼æ¨æåºæ¥çãå¨ä¸é¢çé¨åä¸ï¼æä»¬å°æè¿°æ¨æå®çåç§æ¹æ³ã
name
屿§ä¼è¿å彿°å£°æçåç§°ã
function doSomething() {}
doSomething.name; // "doSomething"
é»è®¤å¯¼åºç彿°å£°æ
ä¸ä¸ª export default
声æå°å½æ°ä½ä¸ºå£°æå¯¼åºï¼è䏿¯è¡¨è¾¾å¼ãå¦æå£°ææ¯å¿åçï¼åå称为 "default"
ã
// -- someModule.js --
export default function () {}
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
æé 彿°
ä½¿ç¨ Function()
æé 彿°å建ç彿°çåç§°æ¯âanonymousâã
new Function().name; // "anonymous"
彿°è¡¨è¾¾å¼
妿彿°è¡¨è¾¾å¼è¢«å½åï¼å该åç§°å°ç¨ä½ name
屿§çå¼ã
const someFunction = function someFunctionName() {};
someFunction.name; // "someFunctionName"
使ç¨å
³é®å function
æç®å¤´å½æ°å建çå¿å彿°è¡¨è¾¾å¼å°ä»¥ ""
ï¼ç©ºå符串ï¼ä½ä¸ºåç§°ã
(function () {}).name; // ""
(() => {}).name; // ""
ç¶èï¼è¿ç§æ åµå¾å°è§ââé常ï¼ä¸ºäºå¨å ¶ä»å°æ¹å¼ç¨è¡¨è¾¾å¼ï¼å½æ°è¡¨è¾¾å¼å¨å建æ¶ä¼éå å°ä¸ä¸ªæ è¯ç¬¦ä¸ï¼ä¾å¦å¨åé声æä¸ï¼ãå¨è¿ç§æ åµä¸ï¼åç§°å¯ä»¥è¢«æ¨æåºæ¥ï¼æ£å¦ä¸é¢çå 个å°èæç¤ºã
ä¸ä¸ªå®é æ 嵿¯ï¼ä»å¦ä¸ä¸ªå½æ°è¿åç彿°æ æ³æ¨æå ¶åç§°ï¼
function getFoo() {
return () => {};
}
getFoo().name; // ""
åé声æåæ¹æ³
åéåæ¹æ³å¯ä»¥ä»å ¶è¯æ³ä½ç½®æ¨æåºå¿å彿°çåç§°ã
const f = function () {};
const object = {
someMethod: function () {},
};
console.log(f.name); // "f"
console.log(object.someMethod.name); // "someMethod"
è¿åæ ·éç¨äºèµå¼ï¼
let f;
f = () => {};
f.name; // "f"
åå§åå¨åé»è®¤å¼
å¨è§£æãé»è®¤åæ°ãç±»åæ®µççåå§åå¨ï¼é»è®¤å¼ï¼ä¸ç彿°ï¼å°ç»§æ¿ç»å®æ è¯ç¬¦çåç§°ä½ä¸ºå®ä»¬ç name
ã
const [f = () => {}] = [];
f.name; // "f"
const { someMethod: m = () => {} } = {};
m.name; // "m"
function foo(f = () => {}) {
console.log(f.name);
}
foo(); // "f"
class Foo {
static someMethod = () => {};
}
Foo.someMethod.name; // someMethod
ç®åæ¹æ³
const o = {
foo() {},
};
o.foo.name; // "foo";
ç»å®å½æ°
Function.prototype.bind()
æå建ç彿°å°ä¼å¨å½æ°çåç§°åå ä¸âboundâã
function foo() {}
foo.bind({}).name; // "bound foo"
getter å setter
å½ä½¿ç¨ get
å set
访é®å¨å±æ§æ¶ï¼å½æ°åç§°ä¸å°åºç°âgetâæâsetâã
const o = {
get foo() {},
set foo(x) {},
};
const descriptor = Object.getOwnPropertyDescriptor(o, "foo");
descriptor.get.name; // "get foo"
descriptor.set.name; // "set foo";
ç±»
ç±»çåç§°éµå¾ªä¸å½æ°å£°æå表达å¼ç¸åçç®æ³ã
class Foo {}
Foo.name; // "Foo"
è¦åï¼ JavaScript åªä¼å¨å½æ°æ²¡æèªæç name
屿§æ¶æè®¾ç½®å½æ°ç name
屿§ãç¶èï¼ç±»çéææåå°è¢«è®¾ç½®ä¸ºç±»æé 彿°çèªæå±æ§ï¼ä»è黿¢å
ç½®ç name
屿§çæã请åé
ä¸é¢ç示ä¾ã
å¦æä½¿ç¨ä¸ä¸ª Symbol
ä½ä¸ºå½æ°åï¼å¹¶ä¸è¯¥ symbol æä¸ä¸ªæè¿°ï¼é£ä¹è¯¥æ¹æ³çåç§°å°æ¯æ¹æ¬å·ä¸çæè¿°ã
const sym1 = Symbol("foo");
const sym2 = Symbol();
const o = {
[sym1]() {},
[sym2]() {},
};
o[sym1].name; // "[foo]"
o[sym2].name; // "[]"
ç§æå±æ§
ç§æåæ®µåç§ææ¹æ³çåç§°ä¸å
å«äºå·ï¼#
ï¼ã
class Foo {
#field = () => {};
#method() {}
getNames() {
console.log(this.#field.name);
console.log(this.#method.name);
}
}
new Foo().getNames();
// "#field"
// "#method"
ç¤ºä¾ è·å对象çæé 彿°åç§°
ä½ å¯ä»¥ä½¿ç¨ obj.constructor.name
æ¥æ£æ¥å¯¹è±¡çâç±»âåã
function Foo() {} // æï¼class Foo {}
const fooInstance = new Foo();
console.log(fooInstance.constructor.name); // "Foo"
ç¶èï¼ç±äºéææåå°æä¸ºç±»çèªæå±æ§ï¼æä»¬å 乿 æ³è·åå
·æéææ¹æ³å±æ§ name()
çä»»ä½ç±»çç±»åï¼
class Foo {
constructor() {}
static name() {}
}
ä½¿ç¨ static name()
æ¹æ³åï¼Foo.name
ä¸åä¿åå®é
çç±»åï¼èæ¯ä¸ä¸ªå¯¹ name()
彿°å¯¹è±¡çå¼ç¨ãå°è¯éè¿ fooInstance.constructor.name
è·å fooInstance
çç±»åå°æ æ³å¾å°ç±»åï¼èæ¯å¾å°ä¸ä¸ªå¯¹éæç±»æ¹æ³çå¼ç¨ã示ä¾ï¼
const fooInstance = new Foo();
console.log(fooInstance.constructor.name); // Æ name() {}
ç±äºéæå段çåå¨ï¼name
ä¹å¯è½ä¸æ¯ä¸ä¸ªå½æ°ã
class Foo {
static name = 123;
}
console.log(new Foo().constructor.name); // 123
å¦æç±»æä¸ä¸ªéæå±æ§å为 name
ï¼å®ä¹å°å为å¯åçã卿²¡æèªå®ä¹éæå®ä¹çæ
åµä¸ï¼å
ç½®å®ä¹æ¯åªè¯»ç:
Foo.name = "Hello";
console.log(Foo.name); // 妿 Foo ç±»æä¸ä¸ªéæçânameâ屿§ï¼å为âHelloâï¼ä½å¦ææ²¡æï¼å为âFooâã
å æ¤ï¼ä½ å¯è½ä¸ä¼ä¾èµå
ç½®ç name
屿§æ¥å§ç»ä¿åç±»çåç§°ã
è¦åï¼ å¨ä½¿ç¨ JavaScript å缩å¨ï¼ç¼©å°å¨ï¼ææ··æ·å¨çæºç 转æ¢å·¥å
·æ¶ï¼è¦å°å¿ä½¿ç¨ name
屿§ãè¿äºå·¥å
·é常ä½ä¸º JavaScript æå»ºæµç¨çä¸é¨å使ç¨ï¼ä»¥åå°ç¨åºå¨é¨ç½²å°ç产ç¯å¢ä¹åç大å°ãæ¤ç±»è½¬æ¢é常ä¼å¨æå»ºæ¶æ´æ¹å½æ°çåç§°ã
ä¾å¦æè¿æ ·ç䏿®µæºç ï¼
function Foo() {}
const foo = new Foo();
if (foo.constructor.name === "Foo") {
console.log("âfooâæ¯âFooâä¸ä¸ªçå®ä¾");
} else {
console.log("Oops!");
}
å¯ä»¥å缩为ï¼
function a() {}
const b = new a();
if (b.constructor.name === "Foo") {
console.log("âfooâæ¯âFooâä¸ä¸ªçå®ä¾");
} else {
console.log("Oops!");
}
卿ªå缩ççæ¬ä¸ï¼ç¨åºè¿å
¥äºçå¼åæ¯å¹¶æå°äº "âfooâæ¯âFooâä¸ä¸ªçå®ä¾"ãèå¨å缩åççæ¬ä¸ï¼å®çè¡ä¸ºä¸åï¼å¹¶è¿å
¥äº else 忝ãå¦æä½ ä¾èµäº name
屿§ï¼å°±åä¸é¢ç示ä¾ä¸æ ·ï¼è¯·ç¡®ä¿ä½ çæå»ºæµç¨ä¸ä¼æ´æ¹å½æ°åç§°ï¼æè
ä¸è¦åè®¾å½æ°å
·æç¹å®çåç§°ã
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