Нет концепции приведения в JavaScript. Вместо этого вы можете изменить конструктор вашего класса так, чтобы он принимал простой объект. Как вы это сделаете, зависит от того, как вы настроили свой класс, но может просто включить поверхностную копию объекта в новый экземпляр класса:
var MyClass = function (obj) {
for (var i in obj) {
if (!obj.hasOwnProperty(i)) continue;
this[i] = obj[i];
}
// Other class initialisation code
};
Затем «бросьте» ваш объект так:
var result = new MyClass(someObject);
Если у вас есть несколько классов, которые требуют этого, вы можете предпочесть создать функцию extend
, которая выполняет клонирование за вас (или, если вы используете jQuery, эта функция уже существует):
var extend = function (obj1, obj2) {
for (var i in obj2) {
if (!obj2.hasOwnProperty(i)) continue;
obj1[i] = obj2[i];
}
};
А потом «разыграть» вот так:
var result = new MyClass();
extend(result, someObject);