无法理解 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;
}
};
- 常量数据={};
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; }
我对 JS 中的以下行为感到困惑。我以两种方式声明一个 javascript 对象
假设 employee.json = [{emp1}]
1)
const data = {
employees : require('../Model/employee.json') ,
setEmployee : function(data){
this.employees = data;
}
};
- 常量数据={}; 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; }