1

好的,看下面的代码:

function person(name){
    this.name = name;
    this.say = function(){
        alert(this.name);
    }
};

Main = {};

Main.person1 =  new person("p1");

Main.person2 =  new person("p2");

Main.person3 =  new person("p3");

executeSay = function(argument1){
 //Implementation
}

应该做executeSay的是,调用给定参数的 say 方法,我不确定它是怎么回事,但让我把这个方法executeSay("person1")应该执行Main.person1.say()等等。我认为我们可以通过call方法实现这一点,但我不确定实施。

请不要建议以下方法

say = function(){
  alert(this.name);
}
say.call(Main.person1);
4

4 回答 4

2

我会这样做:

function Person(name){
  this.name = name
}

Person.prototype.say = function () {alert(this.name)}

var main = {
  person1: new Person('p1')
, person2: new Person('p2')
, person3: new Person('p3')
}

function executeSay(personStr) {main[personStr].say()}

(更新以反映 executeSay 的字符串参数)

于 2012-10-12T10:13:12.017 回答
2

如果你已经在函数中传递了对象,你可以在那里访问它的所有方法,所以使用:

executeSay = function(person){
  person.say();
}

然后通过例如调用此函数

executeSay( Main.person1 );
于 2012-10-12T10:00:05.577 回答
0

这不工作吗?

executeSay = function(person){person.say()}
于 2012-10-12T10:04:43.263 回答
0

LetexecuteSay调用参数对象的 say 方法:

executeSay = function(person){
 person.say();
}

演示

于 2012-10-12T10:03:09.877 回答