2012-04-13 79 views
2

enter image description here增加数组的属性/方法?

最近,我碰到a question of how jQuery acts as both a function, as well as an object。使得它成为可能的原因是jQuery实际上是一个函数(因此是$()),它附有属性(如$.each())。

现在在我的项目中,我想创建一个模型(技术上是一个东西的数组),并向它添加方法,并将其返回到一个将保存它的变量。这样做是明智的吗?它干扰什么?

//i did it like this: 
function createModel(name){ 
    var model = internal.models[name] = []; 
    model.add = function(){..logic to add to the model..} 

    //more augmented methods here... 

    return model; 
} 

//create a model 
var myModel = createModel('test'); 

//then i can do add 
myModel.add('foo'); 

要补充的,我不想浪费时间与实际Array原型的东西。我正在为当前创建的数组做这件事。


我制作的模型不像Backbone.js的模型,它是一个数据单元。它更像Backbone.js的集合或数据库表的同义词。

回答

1

该风格中的某些东西可能会这样做,也从来没有将模型作为数组启动,而是始终采用函数(构造函数)和适当的对象,因此它们更灵活。

var model = function(data) { 
    this.data = data; 
}; 

model.prototype.getData = function() { 
    return this.data; 
}; 

var mod = new model({foo:'foo'}); 

mod.getData().foo 
+0

更新了我的文章。实际上,代码位于一个函数中,该函数返回新创建的模型以供参考以及操作。 – Joseph 2012-04-13 12:44:47