2012-08-03 106 views
-1

这是我从属性的哈希创建对象:如何重用对象构造函数?

var object = new function (data) { 
    var self = this; 
    self.property = data.property; 
    self.anotherProperty = data.anotherProperty; 

    self.method = function() { return 'something'; } 
    self.update = function (newData) { 
    //what is here ? 
    //i could have written: 
    self.property = newData.property; 
    self.anotherProperty = newData.anotherProperty; 
    //but why not reuse the constructor? 
    } 
}; 

我不知道如何再利用这个功能(构造函数)来更新哈希从一个对象。 这样:

object.update(newData) 

将从newData哈希以同样的方式是在构造函数中完成更新当前对象的属性。

回答

2

通过给构造函数一个名字?

function MyNotReallyClass(data){ 
    var self = this; 
    self.property = data.property; 
    self.method = function() { return 'something'; } 
    self.update = MyMyNotReallyClass; 
}; 

你可以现在可以调用

var obj = new MyNotReallyClass(data); 
var obj2 = new MyNotReallyClass(data); 

obj.update(data); 

我希望这有助于..我不是100%肯定,因为我学习太..但是,是尝试它;)

编辑:在阅读你的评论后:“但是,这将返回一个新的实例,不是吗?我不希望“

我想你可以写的更新功能,并调用它在构造函数

var object = new function (data) { 
    var self = this; 
    self.update = function (newData) { 
    self.property = data.property; 
    self.method = function() { return 'something'; } 
    // and other things You want to do in constructor and update 
    } 
    self.update(data); 
} 

;!

+0

嘿,好思考你转身倒挂问题,冷静这允许该功能保持匿名。 – Dziamid 2012-08-03 10:16:09