javascript - Knockout JS 是否使用 Key-value Observation 来检测模型和 View 之间的变化?

标签 javascript knockout.js

Knockout JS 是否使用 Key-value Observation 来检测模型和 View 之间的变化?

React JS 使用虚拟 DOM,Angular1 使用脏检查,我很好奇 Knockout JS 是否使用 KVO 进行变化检测:同步模型和 View 。

最佳答案

查看源码: http://knockoutjs.com/downloads/knockout-3.4.2.debug.js

当使用新值调用可观察对象时,将调用 observable.isDifferent 方法,该方法又会调用以下函数,以测试值是否不同。

因此,在回答您的问题时,如果您提供的值是原始的、不同的或非原始的,则将通知可观察对象的订阅者。

var primitiveTypes = { 'undefined':1, 'boolean':1, 'number':1, 'string':1 };

function valuesArePrimitiveAndEqual(a, b) {
    var oldValueIsPrimitive = (a === null) || (typeof(a) in primitiveTypes);
    return oldValueIsPrimitive ? (a === b) : false;
}

关于javascript - Knockout JS 是否使用 Key-value Observation 来检测模型和 View 之间的变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44089381/

相关文章:

javascript - knockout 验证异步验证器 : Is this a bug or am I doing something wrong?

javascript - 如何使用动态变量名调用 Angular 范围?

javascript - Vuejs http 拦截器失败

javascript - 使用 mutationObserver 观察 html 文本变化

javascript - 不安全的 JavaScript 尝试使用框架访问

knockout.js - Google Chart API 的 knockout 自定义绑定(bind) - 访问被拒绝

javascript - 时刻日期选择器 : subcription to KO property

javascript - 使html post表单提交后自动返回

javascript - 动态行创建挖空js

css - knockout css动态绑定(bind)