javascript - Function 怎么会有实例方法呢?
问题描述
MDN 说Function 对象具有实例和原型属性(例如name
是 的实例属性Function
)。所以我可以这样做:
function testA()
{
console.log("testA");
}
console.log(testA.name);
console.log(Function.name);
但是怎么做?Function
是一个对象构造函数。将属性传递给它的实例的唯一方法是通过.this
将它们保存到它的关键字prototype
,如下所示:
function Person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}
这些实例方法是什么,它们如何可用于Function
像这样的实例testA
?
解决方案
方法是值是函数的属性。因为name
是字符串,所以它不是方法。
函数具有设置名称的明确规则:
FunctionDeclaration : 函数BindingIdentifier (FormalParameters) {FunctionBody}
- 如果 FunctionDeclaration 的函数代码是严格模式代码,则让 strict 为真。否则让 strict 为假。
- 让名称为 BindingIdentifier 的 StringValue。
- 令 F 为 FunctionCreate(Normal, FormalParameters, FunctionBody, scope, strict)。
- 执行 MakeConstructor(F)。
- 执行 SetFunctionName(F, name)。
- 将 F.[[SourceText]] 设置为与 FunctionDeclaration 匹配的源文本。返回 F。
将属性传递给其实例的唯一方法是通过 .this 关键字将它们保存到其原型
No.this
是指由构造函数创建的对象,而不是其原型。
推荐阅读
- python - AttributeError:“WebElement”对象没有“已检查”属性
- python - 如何将此 getter/setter 代码包装在装饰器中?
- python - 带有附加(依赖于输入)参数的 TensorFlow 自定义度量和损失函数
- delphi - Delphi 中的 APDU 命令
- html - 尝试将 Cashfree 支付网关连接到表单
- reactjs - 获取 React 组件内部的调用深度
- html - 为什么我的身体背景图像没有出现?它没有出现在网站上的任何地方,我知道该 URL 正在运行
- django - 谷歌搜索控制台似乎无法检测到内部页面的链接(django i18 问题?)
- flutter - 我如何返回一个复选框值颤动
- hadoop - Hive:更改 mapper 和 reducer 内存会导致资源使用量的巨大差异