Здравствуйте!
В JS имеется возможность расширять прототипы, например, так:
MyClass.prototype.show = function(){
... //Код метода, который будет доступен всем объектам, созданным с помощью new MyClass();
}
Кроме того, можно задавать свойства для объектов, например, так:
Object.defineProperty(myClassInstance, "content", {
get: function(){
... //Следует возвратить значение свойства "content" объекта myClassInstance
},
set: function(val){
... //Код, устанавливающий значение свойства "content" объекта myClassInstance
}
});
Ограничение заключается в том, что нельзя свойства задавать для прототипов, т.е. такая конструкция НЕ работает:
function MyClass(properties){
... //Код конструктора
};
//Здесь же, чуть ниже попытаемся добавить свойство классу:
Object.defineProperty(MyClass, "content", {
set: function(val){
...
},
get: function(val){
...
}
});
И вот такая - тоже не работает:
Object.defineProperty(MyClass.prototype, "content", {
set: function(val){
...
},
get: function(val){
...
}
});
Хотя, может быть, кто-нибудь знает обходной манёвр, позвляющие добавить свойства в прототип?