Javascript 函数如何具有实例方法?
MDN表示具有实例和原型属性(例如,Javascript 函数如何具有实例方法?,javascript,Javascript,MDN表示具有实例和原型属性(例如,name是Function的实例属性)。所以我可以这样做: function testA() { console.log("testA"); } console.log(testA.name); console.log(Function.name); 但是怎么做呢功能是一种功能。将属性传递到其实例的唯一方法是通过。此关键字将属性保存到其原型,如下所示: function Person(first, last, age, eye) { this.
name
是Function
的实例属性)。所以我可以这样做:
function testA()
{
console.log("testA");
}
console.log(testA.name);
console.log(Function.name);
但是怎么做呢<代码>功能是一种功能。将属性传递到其实例的唯一方法是通过。此
关键字将属性保存到其原型
,如下所示:
function Person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}
这些实例方法是什么?它们如何可用于
函数
实例,如testA
?方法是值为函数的属性。因为name
是一个字符串,所以它不是一个方法
功能包括:
FunctionDeclaration:functionBindingIdentifier(FormalParameters)
{FunctionBody}
将属性传递到其实例的唯一方法是通过。这个关键字将属性保存到其原型中
否。
此
指的是由构造函数创建的对象,而不是其原型。函数是与任何其他对象一样的对象。对象可以具有属性。因此,函数可以具有属性。其实就是这么简单
将属性传递到其实例的唯一方法是通过。此
关键字将属性保存到其原型中,如下所示:
function Person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}
否,将属性添加到此
不会将它们添加到函数的原型中。它将它们添加到调用中此引用的任何中;在您的示例中,假设您通过new
(或类似方式)调用Person
,它将是由Person
初始化的对象。它不会是Person
的原型(Function.prototype
),也不会是Person
的prototype
对象
函数如何具有实例[属性和方法]
函数是JavaScript中的对象。真实的,真实的物体。对象可以有属性,其中一些属性可以引用函数——这有效地使它们成为实例方法
那么为什么函数
或测试
有名称
属性呢?因为说明书上是这么说的。创建函数时:
function testA() {
// ...
}
…规范说它获得了一个名称
属性和一些其他属性(长度
,在许多情况下是原型
,等等)。它们是对象的“自有”属性。(对象还继承一些属性,例如apply
和call
。所有这些属性都是引用函数的属性;例如,它们是原型方法。)
这与规范所说的RegExp对象具有lastIndex
或flags
属性,或者Map
对象具有size
属性没有什么不同:
const rex=/./g;
console.log(rex.lastIndex);//0
console.log(rex.flags);//“g”(在最新的JavaScript引擎上)
console.log(新映射().size);//0
那么这些实例属性是由JS引擎创建的?好的,但是其他函数对象应该只能访问其原型属性,如何访问它们?为什么其他函数只能访问原型上的属性?如果你有一个对象,你可以访问它的属性。是的,但是为什么这个语句有效:console.log(testA.name)代码>如果在这种情况下,它应该只在原型链中查找此属性?在这个statemenet中,您在哪里看到函数、名称或类似的内容?“如果在这种情况下,它应该只在原型链中查找此属性?”-为什么您认为它应该只在原型链中查找?“在这个statemenet中,您在哪里看到函数、名称或类似的内容?”-函数构造函数与它有什么关系?您甚至没有使用构造函数来创建funcA
,而是使用了一个函数声明。好的,但是这个语句怎么能:console.log(testA.name)在这种情况下,如果只在原型链中查找此属性,代码>工作?在这个statemenet中,您在哪里看到函数、名称或类似的东西?为什么它必须查看原型链?只有当testA
没有name
属性时,它才会查看原型链,但它有。