Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.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_Jquery_Object_This - Fatal编程技术网

以不同的方式调用javascript函数

以不同的方式调用javascript函数,javascript,jquery,object,this,Javascript,Jquery,Object,This,假设我的职能是: function test1() { this.x= 10; this.fun = function() { return function() { console.log(this.x); }; }; } var obj = new test1(); var returnFun = obj.fun(); 有两种方法可以调用此函数: returnFun(); 及 为什么第一种方法不可取?在两种不同的情况下,“this”的值是多少? 将var o

假设我的职能是:

function test1() {
  this.x= 10;
  this.fun = function() {
   return function() {
   console.log(this.x);
  };
 };
}


var obj = new test1();
var returnFun = obj.fun();
有两种方法可以调用此函数:

returnFun();

为什么第一种方法不可取?在两种不同的情况下,“this”的值是多少? 将
var obj=newtest1()语句创建一个新对象并将
“this”
的值设置为原型

为什么第一种方法(
returnFun();
)不值得推荐

这种方法一点问题也没有

在两种不同的情况下,“这”的价值是什么

在第一个示例中,
的值将是定义函数的外部范围,即
窗口

要以编程方式更改此
的范围,请使用或方法,如第二个示例所示。这意味着对于第二个示例,函数中的
This
将引用
obj
变量

为什么第一种方法(
returnFun();
)不值得推荐

这种方法一点问题也没有

在两种不同的情况下,“这”的价值是什么

在第一个示例中,
的值将是定义函数的外部范围,即
窗口


要以编程方式更改此的范围,请使用或方法,如第二个示例所示。这意味着对于第二个示例,函数中的
This
将引用
obj
变量。

两个调用中的“This”值不相同,例如:returnFun.call(obj);“this”的值是“obj”@RoryMcCrossan:我有一个澄清,当你在第一个例子中说,“this”将是函数定义的外部作用域,这意味着如果我把它放在一个函数a(){returnFun();}“this”将与a()的“this”相同吗?在两个调用中“this”的值不相同,例如:returnFun.call(obj); “this”的值是“obj”@RoryMcCrossan:我有一个澄清,当你在第一个例子中说,“this”将是函数定义的外部范围,这意味着如果我把它放在函数a(){returnFun();}中,“this”将与a()的“this”相同吗?
returnFun.call(obj);