好的,请看以下代码:
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);
答案 0 :(得分:2)
如果您已经在函数中传递了该对象,则可以访问其中的所有方法,因此请使用:
executeSay = function(person){
person.say();
}
然后通过例如
调用此函数executeSay( Main.person1 );
答案 1 :(得分: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的字符串参数)
答案 2 :(得分:0)
答案 3 :(得分:0)
这不起作用吗?
executeSay = function(person){person.say()}