所以我有这个class
定义:
class Field {
constructor(canvas) {
const CANVAS = document.querySelector(canvas);
const CONTEXT = CANVAS.getContext("2d");
return Object.assign(CONTEXT, Field.prototype); // *
}
prototypeMethodName() {
return "something";
}
}
console.log(new Field("canvas"));
<canvas></canvas>
这里的主要想法是,当我调用new Field()
时,我得到的不是Field
的实例,而是由两个其他对象组成的对象:CONTEXT
和Field.prototype
。 CONTEXT
是CanvasRenderingContext2D
的实例,基本上,我只是想用其他方法来扩充它(在这个例子中它只是一种方法prototypeMethodName()
)。
但在这种情况下,我得到一个不包含任何“我的”属性的裸CONTEXT
对象。
我还注意到assign
方法只有在我尝试将某个原型合并到tatget对象时才能正常工作。所以这里的事情不是关于CONTEXT
对象,而是关于原型。
为什么我的代码不起作用?我该怎么办才能让它发挥作用呢?