kendoui observable接收不可枚举的属性

时间:2014-04-09 15:54:38

标签: kendo-ui kendo-mvvm

有没有办法让kendo.observable为它返回的对象添加不可枚举的属性?例如:

var someObject = {};
someObject.x = 5;
Object.defineProperty(someObject, "someString", {
    enumerable: false,
    configurable: false,
    writable: true
});
someObject.someString = "This is the base";

var foo = kendo.observable(someObject)

"x" in foo;  //true
"someString" in someObject;  //true
"someString" in foo;  //false, but I want this to be true

1 个答案:

答案 0 :(得分:0)

有趣的问题。实际上,当您从具有不可枚举的属性的对象中创建新的可观察对象时。初始化实际上会跳过以创建此类属性。

相反,您可以从常规对象中创建可观察对象(其中所有属性都是可枚举的),然后您可以将枚举属性更改为false。

这就是我的意思:

var bar = kendo.observable( { blabla : 123 });
Object.defineProperty(bar, 'blabla', { enumerable: false });
var isEnumerable = Object.getOwnPropertyDescriptor(bar, 'blabla').enumerable // returns false
'blabla' in bar //returns true