确定对象属性是否为ko.observable
我正在使用KnockoutJS版本2.0.0
如果我遍历一个对象的所有属性,我怎么testing每个属性是否是一个ko.observable ? 以下是我迄今为止所尝试的: 
  var vm = { prop: ko.observable(''), arr: ko.observableArray([]), func: ko.computed(function(){ return this.prop + " computed"; }, vm) }; for (var key in vm) { console.log(key, vm[key].constructor === ko.observable, vm[key] instanceof ko.observable); } 
但迄今为止,一切都是错误的。
  Knockout包含一个名为ko.isObservable()的函数。 你可以把它ko.isObservable(vm[key]) 。 
从评论更新:
这是一个函数来确定是否有一个计算观察值:
 ko.isComputed = function (instance) { if ((instance === null) || (instance === undefined) || (instance.__ko_proto__ === undefined)) return false; if (instance.__ko_proto__ === ko.dependentObservable) return true; return ko.isComputed(instance.__ko_proto__); // Walk the prototype chain }; 
 更新:如果你正在使用KO 2.1+  – 那么你可以直接使用ko.isComputed 。 
淘汰赛有以下function,我认为是你在找什么:
 ko.isObservable(vm[key]) 
我在用着
 ko.utils.unwrapObservable(vm.key) 
  更新 :从版本2.3.0开始, ko.unwrap被添加为ko.utils.unwrapObservable