首页 > 解决方案 > 在对象初始化上使用 Object.setPrototypeOf() 会影响性能吗?

问题描述

我有一个使用自定义泛型类的应用程序,它始终具有属性typecontent但可以表示各种不同的内容类型,并且必须为每种类型定义泛型方法,例如getContent,setContent等。为此,我定义了泛型类在一个文件中:

function Block(type) {
    this.type = type;
    this.content = "";

    switch(this.type){
        case "text":
            Object.setPrototypeOf(this, TextBlock);
            break;
        case "picture":
            Object.setPrototypeOf(this, PictureBlock);
            break
    }
}

以及各自文件中的相应原型,如下所示:

// textblock.prototype.js

TextBlock = {

    createLine() {
        //
    },

    setContent() {
        //
    },

    //etc
}

当使用类型、内容和原型方法创建新块时new Block("text");,将启动。这些原型方法只会被设置一次,Object.setPrototypeOf()并且在整个代码执行过程中不会被更改或重置。

我的问题是:Object.setPrototypeOf()以这种方式使用会显着降低性能吗?MDN 在他们的页面上有一条警告说,使用这种方法可能会出现严重的性能问题,但我想知道是否有更了解该主题的人可以谈论何时适合使用这种方法。毕竟是标准。

标签: javascriptperformance

解决方案


推荐阅读