这个对象是JavaScript
早上好,在我的时区 我正在读Javascript的书,有一个例子,其中“this”对象可能会导致与我们期望的结果不同的结果这个对象是JavaScript,javascript,this,Javascript,This,早上好,在我的时区 我正在读Javascript的书,有一个例子,其中“this”对象可能会导致与我们期望的结果不同的结果 var name = “The Window”; var object = { name : “My Object”, getNameFunc : function(){ return function(){ return t
var name = “The Window”;
var object = {
name : “My Object”,
getNameFunc : function(){
return function(){
return this.name;
};
}
};
(object.getName = object.getName)(); // This will return global value "The window"
我的问题是:“this”和“arguments”变量在调用函数时是完全填充的,所以在上面的代码行中,赋值是将函数引用再次复制到getName变量,所以当调用函数时,this应该指向“object”对象,为什么它指向全局上下文
提前谢谢
请注意,此的值通常是Javascript中的更改。一般来说:只有当您直接调用函数时,如
object.getFoo()
,这将是您所期望的。如果首先创建对函数的引用,如var getFoo=object.getFoo
,然后调用getFoo()
,则将在所处对象的上下文中调用它。您甚至可以使用call
和apply
将更改为您想要的任何内容。在您提供的示例中,将此
设置为窗口
时,无操作分配是一种令人困惑的方式
也许你应该找一本更好的书;) 好的,我已经理解了,assigment返回函数对象,因此它与从全局上下文调用函数是一样的。非常感谢,我认为您的示例不完整,getName
缺失。您可以编辑您的问题,并应将一个答案标记为已接受: