Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个对象是JavaScript_Javascript_This - Fatal编程技术网

这个对象是JavaScript

这个对象是JavaScript,javascript,this,Javascript,This,早上好,在我的时区 我正在读Javascript的书,有一个例子,其中“this”对象可能会导致与我们期望的结果不同的结果 var name = “The Window”; var object = { name : “My Object”, getNameFunc : function(){ return function(){ return t

早上好,在我的时区

我正在读Javascript的书,有一个例子,其中“this”对象可能会导致与我们期望的结果不同的结果

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
缺失。您可以编辑您的问题,并应将一个答案标记为已接受: