2014-04-09 40 views
1

有沒有辦法讓kendo.observable爲其返回的對象添加非枚舉屬性?例如:kendoui 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 

回答

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 
+0

嗯,您的評論,它跳過創建這樣的屬性是有趣的。你在哪裏看到?有一些原因讓我無法在您的代碼塊中針對我的特定情況執行您的建議,但它可以在其他情況下使用。 – user2719430