gpt4 book ai didi

javascript - 使用 knockout 时,属性定义是方法定义

转载 作者:行者123 更新时间:2023-11-28 02:01:29 26 4
gpt4 key购买 nike

根据Google style guide ,方法应该在构造函数的原型(prototype)上定义,属性应该使用 this 关键字在构造函数中定义。

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

最佳答案

所以首先,是的,有一个使用 getter 和 setter 的 knockout 插件,但它只适用于较新的浏览器。您牺牲了对 IE8< 的兼容性(这是不可避免的,因为这些浏览器不支持 javascript getters/setters)。 The plugin can be found here .

您的要点是:理解风格指南的意图很重要。由于方法通常可重用,因此将它们放在原型(prototype)上可以节省重复的代码和内存分配。这就是为什么建议将它们放在原型(prototype)上。然而, knockout 可观察量不可重复使用。它们的行为类似于属性:它们存储特定于实例的信息。这种差异很重要。它们可能函数,但它们被视为属性

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

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

关于javascript - 使用 knockout 时,属性定义是方法定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18386262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com