2

我有一个关于作为 Knockout Objects 原型的函数的一般性问题。目前,我很幸运使用以下方法来扩展对象的原型,但是我很好奇这样做会遇到什么好处和/或陷阱。

ko.utils.extend(objectModel.prototype, {
    makeAlert: function() {
        console.log('alert');
    },
    makeWhoopie: function() {
        console.log('whoopie');
    },
});

另一种方式是常见的js方法

objectModel.prototype.makeAlert = function() { console.log('alert'); }
objectModel.prototype.makeWhoopie = function() { console.log('whoopie'); }

我使用 ko.utils.extend 方法的唯一其他方法是在实现验证时。

问题:用于扩展原型的淘汰实用程序方法是否带有任何认为不必要的额外开销?有没有首选的方法?我这样做喜欢将我的方法与我的 observables 分开。

4

1 回答 1

1

只需设置这个jsperf 测试。老实说,我对结果感到有些惊讶。但是请记住,这里的性能差异几乎可以忽略不计,尤其是当您只执行一次时。我更喜欢$.extend它,因为它比ko.utils.extend我更喜欢使用 .extend 方法,因为它使代码更易于阅读。

所以回答你的问题:

用于扩展原型的淘汰实用程序方法是否带有任何认为不必要的额外开销? Apparently not

有没有首选的方法?Matter of opinion. Given the performance difference is negligible, I'd go with the way that is more human readable.

于 2013-09-05T19:55:45.430 回答