为什么不通过Object.assign()工作将原型合并到另一个对象?

问题描述 投票:0回答:2

所以我有这个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的实例,而是由两个其他对象组成的对象:CONTEXTField.prototypeCONTEXTCanvasRenderingContext2D的实例,基本上,我只是想用其他方法来扩充它(在这个例子中它只是一种方法prototypeMethodName())。

但在这种情况下,我得到一个不包含任何“我的”属性的裸CONTEXT对象。

我还注意到assign方法只有在我尝试将某个原型合并到tatget对象时才能正常工作。所以这里的事情不是关于CONTEXT对象,而是关于原型。

为什么我的代码不起作用?我该怎么办才能让它发挥作用呢?

javascript
2个回答
© www.soinside.com 2019 - 2024. All rights reserved.