以不同的方式调用javascript函数

时间:2016-05-11 07:21:50

标签: 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();

returnFun.call(obj);

为什么第一种方法不值得推荐?在两种不同的背景下“this”的价值是多少? var obj = new test1();语句是否会创建一个新对象并将"this"的值设置为原型?

1 个答案:

答案 0 :(得分:2)

  

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

这种方法完全没有问题。

  

在两种不同的情境中“this”的价值是什么?

第一个示例中this的值将是函数定义的外部作用域,即window

要以编程方式更改this的范围,请使用call()apply()方法,如第二个示例中所做的那样。这意味着对于第二个示例,函数中的this将引用obj变量。