unwrapObservable和()之间的区别

时间:2013-05-23 09:37:12

标签: knockout.js

以下是否存在实际差异:

y = ko.observable("value");
x = ko.utils.unwrapObservable(y);

y = ko.observable("value");
x = y();

我是否应该更喜欢上述之一?为什么?

1 个答案:

答案 0 :(得分:43)

区别在于ko.utils.unwrapObservable是安全的。当不知道参数是否可观察时,您应该使用它。 例如:

function GetValue(x){
   return ko.utils.unwrapObservable(x);
}

function GetValueEx(x){
   return x();
}

var test = 5;
var y = GetValue(test) // Work fine, y = 5;
y = GetValueEx(test) // Error!

因此,如果您确切知道您的参数是可观察的,则可以使用(),否则请使用unwrapObservable

编辑: 在淘汰赛2.3中添加了unwrapObservable的较短版本 - ko.unwrap