首页 > 解决方案 > “this”和 ObjectName(例如:Person)有什么区别?

问题描述

谁能告诉我以下两个代码之间的区别:

var Person = {
  Cars: [],
  init: function(){ 
    this.Cars = [];
  } 
};

var Person = {
      Cars: [],
      init: function(){ 
        Person.Cars = [];
      } 
    };

一个使用“this”,另一个使用“Person”。

谢谢

标签: javascript

解决方案


在第二个代码中,总是init会在. 另一方面,在第一个代码中,创建属性的对象取决于调用上下文。例如,如果您要将函数放在其他对象上然后调用它,则其他对象会发生变异:CarsPersonCarsinit

var Person = {
  Cars: [],
  init: function(){ 
    this.Cars = [];
  } 
};

var myVar = {};
myVar.init = Person.init;
myVar.init();
console.log(myVar);

如果你使用,你可以做同样的事情.call

var Person = {
  Cars: [],
  init: function(){ 
    this.Cars = [];
  } 
};

var myVar = {};
Person.init.call(myVar);
console.log(myVar);

当您提到 时this,您指的是调用上下文,而不是静态变量/对象。


推荐阅读