我已经创建了一个对象和一个mixin,我已经将mixin分配给了Object,但是我似乎无法从mixin访问该对象,似乎?
mixin.js
class Thing {
constructor(something) {
this.something = something;
}
_otherFunction() {
// does stuff
}
}
module.exports = Thing;
object.js
const Something = require('./mixin');
const Thing = require('./Object');
Object.assign(Thing.prototype, Something);
index.js
doSomething()
当我然后实例化Thing并调用let thing = new Thing({title: 'abc'});
thing.doSomething();
时,它就无法访问this.something ......所以
docker stop $(docker ps -a -q)
我收到错误无法读取属性'标题'未定义的
答案 0 :(得分:2)
你需要抛弃箭头函数,而不是使用vanilla函数,因为箭头函数失去了this
的范围。
class Thing {
constructor(something) {
this.something = something;
}
}
const mixin = {
// changed arrow function to regular function
doSomething: function () {
console.log(this.something.title)
}
}
const thing = new Thing({title: 'abc'})
Object.assign(thing, mixin)
thing.doSomething()

箭头函数表达式...并且没有自己的this,arguments,super或new.target。
很多人错误地认为箭头功能的唯一特征是语法更短 - 但事实并非如此。它的主要实用功能是它不会创建自己的this
。