如何维护对原型对象的对象的访问

时间:2015-03-12 20:12:29

标签: javascript

我不知道问题标题是否有意义,但我从未学过的一件事是如何保持对使用原型方法创建的对象的控制。更具体地说,不是通过

创建的对象
var Joe = new Person('Joe');
Joe.sayName();
Joe.die(); 

而是

var people = {};
var everyone = getAllPeopleFromSomewhere()

$.each(everyone, function(i,e){
     people[i] = new Person(e.name);
});

function die(id){
     people[id].die();  // obvious error
}

die(1);

我觉得我需要另一个抽象系统来管理以这种方式创建的未知数量的对象。但是使用Id从Object(或数组)引用它们似乎不是可行的方法。

http://jsfiddle.net/vcsjx0s1/

1 个答案:

答案 0 :(得分:1)

查看您的代码,您遇到的问题源于此行,有两个地方:

people[i] = new Person(e.name).sayName();

这可以通过两种方式解决:分割呼叫,或在sayName函数中返回this

Person.prototype = {
    sayName: function () {
        $('#' + this.name).html(this.name);
        return this;
    },
    die : function(){
        $('#' + this.name).remove();
    }
};