tengo alguna clase de pruebaCómo configurar nombre de la clase de objeto JavaScript
TestKlass = (function() {
function TestKlass(value) {
this.value = value != null ? value : 'hello world';
console.log(this.value);
}
return TestKlass;
})();
x = new TestKlass;
x instanceof TestKlass; (gives true)
tengo nuevo objeto vacío
y = {}
y instanceof Object
puedo encontrar ningún formas de configurar las propiedades de y, algo como esto
y.__proto__ = x.__proto__
y.constructor.prototype = x.constructor.prototype
para tener este resultado
y instanceof TestKlass => true
============================================ ========
UPD:
So. Mi objetivo principal es crear la función CLONE. Ahora mi solución funciona para mí. Por favor, mire este código:
JavaScript JS objeto clon
Object._clone = function(obj) {
var clone, property, value;
if (!obj || typeof obj !== 'object') {
return obj;
}
clone = typeof obj.pop === 'function' ? [] : {};
clone.__proto__ = obj.__proto__;
for (property in obj) {
if (obj.hasOwnProperty(property)) {
value = obj.property;
if (value && typeof value === 'object') {
clone[property] = Object._clone(value);
} else {
clone[property] = obj[property];
}
}
}
return clone;
};
CoffeeScript JS objeto clon
# Object clone
Object._clone = (obj) ->
return obj if not obj or typeof(obj) isnt 'object'
clone = if typeof(obj.pop) is 'function' then [] else {}
# deprecated, but need for instanceof method
clone.__proto__ = obj.__proto__
for property of obj
if obj.hasOwnProperty property
# clone properties
value = obj.property
if value and typeof(value) is 'object'
clone[property] = Object._clone(value)
else
clone[property] = obj[property]
clone
Ahora usted puede tratar de hacer que
A = new TestKlass
B = Object._clone(A)
B instanceof TestKlass => true
Está bien el trabajo con Moz FF 13. Pero creo que no es un navegador cruzado. y proto está en desuso.
Creo que no hay una solución universal. Pero tal vez será útil para alguien.
'y.constructor = x.constructor'? Solo una suposición ... Realmente, sin embargo, no deberías preocuparte por los tipos. Quiero decir, si hay una manera fácil de fingirlos, ¿de qué sirven en absoluto? – cHao
¿Las respuestas le proporcionan suficiente información? Si es así, ¿podría amablemente aceptar una respuesta? :-) –
Estoy buscando la mejor solución. Voy a marcar la mejor respuesta después de aprender profundamente esta página http://javascript.ru/tutorial/object/inheritance (ruso) –