这个问题困扰了我一段时间。这是一个简单的代码:
update t1
set t1.country = t2.country
from table t1
inner join table t2
on t1.Name = t2.Name and t2.published = 1
where t1.published = 0
chrome控制台的结果是:
function A() {};
A.prototype.B=function() {return this};
A.prototype.B();
据我所知,'这个'指向调用该方法的对象。所以我认为这个'这个'在原型方法中指向A{};
>B: function() {};
>constructor: function A() {};
> proto: Object
(原型也是一个对象,对吧?)。
我想知道'这个'指向原型方法。 A.prototype
或A
?
结果中A.prototype
是什么?它与A{}
之间有什么区别?
答案 0 :(得分:1)
所以我认为原型方法中的'this'指向'A.prototype'(原型也是一个对象,对吗?)
在该示例中,是的。但这是在原型上调用函数的一种非常不寻常的方式。如果你以一种更典型的方式调用它:
var a = new A();
a.B();
...然后this
将是由new A
创建的实例(a
引用的)。
我想知道原型方法中'this'指向的是什么。 A或A.prototype?
在通话中A.prototype
。您可以指向A
而不是Function#call
或Function#apply
:
A.prototype.B.call(A);
...因为this
在JavaScript中实际上是一个函数参数,可以在调用函数时设置。 (除了“绑定”函数[请参阅Function#bind
]或ES6的新“箭头”函数,它们具有词汇绑定this
。)
结果中的'A {}'是什么?
这就是您使用的浏览器中的控制台表示该对象与A
构造函数相关的方式。
答案 1 :(得分:0)
如果你像这样实现构造函数A
var myVariable = new A();
然后方法B
返回myVariable
myVariable.B() === myVariable // true
答案 2 :(得分:0)
this
指的是调用函数的对象。
所以无论你创建什么对象。如果该对象调用该函数,则this
引用该函数。