Javascript 什么是';这';指向原型法?
这个问题使我一时糊涂。下面是一个简单的代码:Javascript 什么是';这';指向原型法?,javascript,prototype,this,Javascript,Prototype,This,这个问题使我一时糊涂。下面是一个简单的代码: function A() {}; A.prototype.B=function() {return this}; A.prototype.B(); chrome控制台中的结果是: A{}; >B: function() {}; >constructor: function A() {}; > proto: Object 正如我所知,“this”指向调用该方法的对象。所以我认为prototype方法中的“this
function A() {};
A.prototype.B=function() {return this};
A.prototype.B();
chrome控制台中的结果是:
A{};
>B: function() {};
>constructor: function A() {};
> proto: Object
正如我所知,“this”指向调用该方法的对象。所以我认为prototype方法中的“this”指向A.prototype(prototype也是一个对象,对吧?)
我想知道“this”在原型方法中指的是什么。A
或A.prototype
结果中的A{}
是什么?它与函数A()
有什么区别
所以我认为prototype方法中的“this”指向“A.prototype”(prototype也是一个对象,对吗?)
在那个例子中,是的。但这是一种在原型上调用函数的极不寻常的方式。如果你用更典型的方式来称呼它:
var a = new A();
a.B();
…然后,此
将是由newa
创建的实例(该A
引用)
我想知道“this”在原型方法中指的是什么。A还是A原型
在您的通话中,A.prototype
。但是,您可以使用函数调用或函数应用,将其指向A
:
A.prototype.B.call(A);
…因为在JavaScript中,此
实际上是一个函数参数,可以在调用函数时进行设置。(除了“绑定”函数[请参见函数35; bind
]或ES6新的“arrow”函数,这些函数具有词汇绑定的this
)
结果中的{}是什么
这正是您正在使用的浏览器中的控制台表示对象与A
构造函数相关的方式。如果您像这样实例化构造函数A
var myVariable = new A();
然后方法B
返回myVariable
myVariable.B() === myVariable // true
此
引用调用函数的对象
所以不管你创建什么对象。如果该对象调用该函数,则此
引用该函数