Я не верю, что есть какой-либо способ изменить тип объекта после его создания.К счастью, вам, вероятно, на самом деле не нужно менять класс своих объектов - вы, вероятно, будете удовлетворены, предоставив объектам некоторые новые методы и другие функциональные возможности.(Единственное реальное различие заключается в том, что произойдет, если вы ИЗМЕНИТЕ класс, и большинство людей не изменяет классы во время выполнения кода.)
Я поделюсь примером для вас.Сначала я создам простой объект для представления имеющихся у вас объектов JSON:
var myobj = new Object()
myobj.name = "Fred"
Затем я создам некоторый класс, который вы хотели бы назначить на myobj
:
function Speaker() {
this.speak = function() {
window.alert("Hello, " + this.name);
}
}
Этот новый Speaker
класс имеет некоторые полезные функции: он может использовать метод speak()
для вывода полезной информации:
var s = new Speaker()
s.name = "Sally"
s.speak()
Выполнение, которое дало мне сообщение " Здравствуйте,Салли ».К сожалению, вам не нужен НОВЫЙ объект (например, s
) с этой функциональностью, вы хотите, чтобы существующий объект (myobj
) имел его.Вот как вы это делаете:
myobj.speak = s.speak
Теперь, когда я выполняю это:
myobj.speak()
Я вижу сообщение " Здравствуйте, Фред ".
Подводя итог: создайте объект, который делает то, что вы хотите.Скопируйте все методы (и любые вспомогательные переменные) в ваш новый объект.За исключением необычного использования наследования, ваш новый объект будет вести себя так, как вам нужно.