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/