无法理解 Javascript 对象行为

Not able to understand Javascript object behavior

我对 JS 中的以下行为感到困惑。我以两种方式声明一个 javascript 对象

假设 employee.json = [{emp1}]

1)

const data = {
    employees : require('../Model/employee.json') ,
    setEmployee : function(data){ 
        this.employees = data;
    }
};
  1. 常量数据={}; data.employees = require('../Model/employee.json'); data.setEmployee =(数据)=> { this.employees = 数据; }

现在,如果我将任何员工数组传递给 setemployee,例如

data.setEmployee([{emp1},{emp2}]); data.employees // returns 更新列表 [{emp1},{emp2}]) 如果我使用方法 1,returns 原始列表 [{emp1}]) 如果我使用方法 2定义

发生这种情况是因为 js 中的箭头函数没有它自己的 this 引用,它总是从父作用域继承(词法作用域)。

在第二种方法中用普通函数定义替换箭头函数将解决问题

const data = {}; 
data.employees = require('../Model/employee.json'); 
data.setEmployee = function (data){ this.employees = data; }