JavaScript:动态扩展原型(prototype)是一种不好的做法吗?

标签 javascript prototype extends

我想知道动态扩展函数的原型(prototype)是否是一种不好的做法。我正在考虑使用静态方法来执行此操作,该方法接收属性名称和要添加到原型(prototype)的函数。

这是一种不好的做法吗?

function Test() {
    this.condition = false;
}

Test.extend = function(id, task) {
    this.prototype[id] = function() {
        return task.apply(this, arguments);
    };
};

最佳答案

我会说在这种情况下这是不好的做法,因为您无法控制要添加的 [id] 方法是否从类中被覆盖。

var test = new Test();
test.extend("example", function() {
    console.log("First Method");
});

test.extend("example", function() {
    console.log("Second Method");
});

根据您的代码,您无法知道第一个方法何时被覆盖,从而随机破坏您的代码。

关于JavaScript:动态扩展原型(prototype)是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37157927/

相关文章:

javascript - Angular 砌体中加载的图像顺序每次都会改变

javascript - angularjs:使用 $compile 时指令中的范围问题

javascript - 在构造函数*内部*分配原型(prototype)方法 - 为什么不呢?

javascript - 在 JavaScript 中将 JSON 字符串解析为特定的对象原型(prototype)

javascript - 将内联 javascript 重写为外部函数 - 此引用

javascript - 设置长时间的计时器,即多分钟

javascript - 对象没有方法 Javascript

java - 如何创建两个类的接口(interface)并标记我可以使用的方法?

Java 扩展示例

java - 我可以合理地访问扩展类的变量吗?