如何访问其他对象的功能

时间:2014-07-25 13:30:42

标签: javascript

我有以下代码 -

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函数?

4 个答案:

答案 0 :(得分:3)

您可以使用applycall

a.sayIt.apply(b);

这些更改了this

的值

答案 1 :(得分:0)

您需要从函数返回ab。然后你可以这样做:

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!

DEMO

答案 2 :(得分:0)

您也可以使用

b = new a();
b.name = 'Jane',
b.greeting = 'Hi'
b.sayIt();

答案 3 :(得分:0)

使用Function.prototype.apply

a.sayIt.apply(b)