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

How to maintain access to an object of prototyped objects

本文关键字:原型 对象 访问 何维护 维护      更新时间:2023-09-26

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

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 从对象(或数组)引用它们似乎不是要走的路。

http://jsfiddle.net/vcsjx0s1/

查看您的代码,您遇到的问题源于以下两个位置:

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();
    }
};