Javascript 如何访问不同对象的函数
我有以下代码-Javascript 如何访问不同对象的函数,javascript,Javascript,我有以下代码- function test() { a = { name : 'John', greeting : 'Hello', sayIt : function() { return this.greeting + ', ' + this.name + '!'; } }; b
function test() {
a = {
name : 'John',
greeting : 'Hello',
sayIt : function() {
return this.greeting + ', ' +
this.name + '!';
}
};
b = {
name : 'Jane',
greeting : 'Hi'
};
}
如何使用b访问sayIt?当然,b说这行不通。我需要打印“嗨,简”。如何将b的名称和问候语传递给sayIt函数?您可以使用
apply
或call
a.sayIt.apply(b);
这些更改了
this
的值。您需要从函数返回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!
您也可以使用
b = new a();
b.name = 'Jane',
b.greeting = 'Hi'
b.sayIt();
使用:
像a.sayIt()?或者一个[“说”]?是的。但是我需要做一些像b.sayIt()这样的事情。有可能做一个b.a.sayIt()吗?除非你想
a
和b
是全局的,你应该var
它们。看起来更像sayIt
函数根本不应该是对象的一部分,而是一个带参数的常规函数。从结构的角度来看,代码没有多大意义,但是,函数名为“test”。对我来说,最合理的做法是将对象设置为“person”,在其原型上设置sayIt方法,并在实例化时设置属性。
a.sayIt.apply(b)