javascript - 根据属性的值获取Object

时间:2011-07-28 20:24:04

标签: javascript jquery

...如果我有以下构造函数,然后创建该类的实例:

    /* Gallery */
function Gallery( _horseName ){
    this.horseName = _horseName
    this.pixList = new Array();
}

var touchGallery = new Gallery( "touch" )

...如何根据horseName的值获取Gallery对象?

考虑实施类似的东西:

Gallery.prototype.getGalleryByHorseName = function( _horseName ){ /* to be implemented */}

......但是却陷入了困境。是否有更清洁或规范的方法来实现这一目标?最终我还必须在jQuery中访问该Gallery对象。

提前致谢

5 个答案:

答案 0 :(得分:4)

最简单的解决方案是将创建的对象保留在对象中。

var myGalleries = {};

myGalleries['touchA'] = new Gallery( "touchA" );
myGalleries['touchB'] = new Gallery( "touchB" );

然后,您可以通过传递密钥快速访问它们。

var galleryOfTouchB = myGalleries['touchB'];

答案 1 :(得分:2)

你可以这样做。我认为这是相当干净和规范的:

var Galleries = (function() {
    var all = [],
        galleriesObj = {};

    galleriesObj.create = function(horseName) {
        var gallery = {
            horseName: horseName,
            pixList: []
        };
        all.push(gallery);
        return gallery;
    };

    galleriesObj.find = function(horseName) {
        var ii;
        for (ii = 0; ii < all.length; ii += 1) {
            if (all[ii].horseName === horseName) {
                return all[ii];
            }
        }
        return null;
    };

    return galleriesObj;
}());

var touchGallery = Galleries.create('touch');

var foundGallery = Galleries.find('touch');

答案 2 :(得分:1)

你可以通过编写一个包含列表到所有Gallery实例的类,然后编写一个迭代每个Gallery对象的函数并返回一个具有匹配名称的函数,以一种很好的方式完成它。

Supaweu展示了一个非常好的和简单的(非oo)示例

答案 3 :(得分:0)

你错过了一两步。您需要一个Gallery对象数组,然后在检查_horseName属性时遍历数组。

答案 4 :(得分:-1)

你可以通过创建一个充满了已创建的马名画廊的对象来实现它:

/* Gallery */
function Gallery( _horseName ){
    this.horseName = _horseName
    this.pixList = new Array();
    Gallery.galleryList[_horseName] = this; // Add this gallery to the list
}
Gallery.galleryList = {};

var touchGallery = new Gallery( "touch" )
var galleryByName = Gallery.galleryList["touch"];