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
引用调用函数的对象

所以不管你创建什么对象。如果该对象调用该函数,则此
引用该函数