window.name
используется для установки имени окна, а так как имя окна может быть только строкой, все, что вы установите на window.name
, преобразуется в строку. И строки, как примитивные значения, не могут иметь свойств. Решение состоит в том, чтобы использовать другое имя переменной или другую область.
В качестве альтернативы вы можете использовать window.name
, как вам нравится, если у вас есть этот код в первую очередь. Я не рекомендую это вообще, но, как доказательство концепции:
(function () {
var _name;
window.__defineGetter__('name', function () {
return _name;
});
window.__defineSetter__('name', function (v) {
_name = v;
});
})();
Кроме того, вместо new Object
вы должны использовать {}
. Кроме того, что он более краток, он также более эффективен и более ясен.
Необходимо будет украсить классы атрибутом DataServiceKey.
[еще 113] детали о блоге Marc здесь и блоге MSDN здесь (последние переговоры о многих ко многим отношениям, но это покрывает атрибут DatServiceKey).