Javascript'te bir nesneyi klonlamaya çalışıyorum. Prototip işlevlerine sahip kendi 'sınıfım' yaptım.Javascript klonlanmış nesneyi prototip işlevlerini kaybeder
Sorunum: Bir nesneyi klonladığımda, klon herhangi bir prototip işlevine erişemez/çağrı yapamaz.
clone.render bir nesne klonlayabilirsiniz nasıl
söyler misin bir fonksiyonu değildir: Ben klonu bir prototip işlevini erişmek giderken
bir hata alıyorum ve Bu basit JSFiddle hatasını izlediğini gösteren prototip fonksiyonları
tutmak alıyorum: http://jsfiddle.net/VHEFb/1/
function cloneObject(obj)
{
// Handle the 3 simple types, and null or undefined
if (null == obj || "object" != typeof obj) return obj;
// Handle Date
if (obj instanceof Date) {
var copy = new Date();
copy.setTime(obj.getTime());
return copy;
}
// Handle Array
if (obj instanceof Array) {
var copy = [];
for (var i = 0, len = obj.length; i < len; ++i) {
copy[i] = cloneObject(obj[i]);
}
return copy;
}
// Handle Object
if (obj instanceof Object) {
var copy = {};
for (var attr in obj) {
if (obj.hasOwnProperty(attr)) copy[attr] = cloneObject(obj[attr]);
}
return copy;
}
throw new Error("Unable to copy obj! Its type isn't supported.");
}
function MyObject(name)
{
this.name = name;
// I have arrays stored in this object also so a simple cloneNode(true) call wont copy those
// thus the need for the function cloneObject();
}
MyObject.prototype.render = function()
{
alert("Render executing: "+this.name);
}
var base = new MyObject("base");
var clone = cloneObject(base);
clone.name = "clone";
base.render();
clone.render(); // Error here: "clone.render is not a function"
var [bu çözüm] (http://stackoverflow.com/a/728694/575527) burada SO içinde . Ancak, bir nesneyi tam olarak klonlamanın açık bir yolu yoktur. [Bu bir jQuery kullanır] (http: // stackoverflow.com/q/122102/575527) – Joseph