1
Knockout JS是否使用Key-value Observation來檢測模型和視圖之間的變化?Knockout JS是否使用Key-value Observation來檢測模型和視圖之間的變化?
React JS使用虛擬DOM,Angular1使用髒檢查,我很好奇如果Knockout JS使用KVO進行變化檢測:使模型與視圖同步。
Knockout JS是否使用Key-value Observation來檢測模型和視圖之間的變化?Knockout JS是否使用Key-value Observation來檢測模型和視圖之間的變化?
React JS使用虛擬DOM,Angular1使用髒檢查,我很好奇如果Knockout JS使用KVO進行變化檢測:使模型與視圖同步。
查看源代碼: http://knockoutjs.com/downloads/knockout-3.4.2.debug.js
當可觀察到的被調用,有一個新的值,該方法observable.isDifferent被調用,這又調用下面的函數,來測試該值是否不同。
因此,在回答您的問題時,如果您提供的值是原始且不同的,或者是非原始的,則可以通知observable的用戶。
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;
}