以不同的方式调用javascript函数

Calling a javascript function in different ways

本文关键字:调用 javascript 函数 方式      更新时间:2023-09-26

考虑我有一个函数作为:

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"的值设置为原型吗?

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

那个方法一点毛病都没有。

在两种不同的情况下,"this"的价值是什么?

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

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