1

根据Google 风格指南,方法应该在构造函数的原型上定义,属性应该在构造函数中使用 this 关键字定义。

我使用 Knockout 进行大部分前端开发,它通过将观察属性转换为函数来处理它们。也就是说,我的所有属性现在或多或少都是方法。这是对性能的重大影响吗?是否有任何使用JavaScript getter 和 setter的 Knockout 变通方法?

4

1 回答 1

1

所以首先,是的,有一个使用 getter 和 setter 的淘汰赛插件,但它只适用于较新的浏览器。您牺牲了对 IE8< 的兼容性(这是不可避免的,因为这些浏览器不支持 javascript getter/setter)。该插件可以在这里找到

对于您的主要观点:了解样式指南的意图很重要。因为方法通常是可重用的,所以将它们放在原型上可以节省重复的代码和内存分配。这就是为什么建议将它们放在原型上的原因。但是,淘汰赛 observables 是不可重用的。它们的行为类似于属性:它们存储特定于实例的信息。这种差异很重要。它们可能函数,但它们被视为属性

谷歌风格指南根本没有解决这种情况。将它们放在实例上不会影响性能,因为您将它与无法工作的场景进行比较。将 observable 放在原型上会破坏模型。做唯一有效的事情并不会影响性能。

最后一点,getter 和 setter 插件不会使函数消失,它只是将它们隐藏在 getter 和 setter 后面。性能不会提高,因为仍然需要做同样的工作。

于 2013-08-22T17:50:16.587 回答