我有以下代码 -
function test() {
a = {
name : 'John',
greeting : 'Hello',
sayIt : function() {
return this.greeting + ', ' +
this.name + '!';
}
};
b = {
name : 'Jane',
greeting : 'Hi'
};
}
如何使用b访问sayIt?当然b.sayIt将无法正常工作。我需要打印' Hi Jane'。如何将b的名称和问候语传递给sayIt函数?
答案 0 :(得分:3)
您可以使用apply
或call
。
a.sayIt.apply(b);
这些更改了this
。
答案 1 :(得分:0)
您需要从函数返回a
和b
。然后你可以这样做:
function test() {
var a = {
name : 'John',
greeting : 'Hello',
sayIt : function() {
return this.greeting + ', ' +
this.name + '!';
}
};
var b = {
name : 'Jane',
greeting : 'Hi'
};
return this;
}
test().a.sayIt.call(test().b); // Hi Jane!
答案 2 :(得分:0)
您也可以使用
b = new a();
b.name = 'Jane',
b.greeting = 'Hi'
b.sayIt();
答案 3 :(得分:0)
a.sayIt.apply(b)