Javascript从对象表调用函数

时间:2016-03-11 17:10:04

标签: javascript arrays function object

我正在学习javascript,我在从表调用函数时遇到问题。这是代码:

function Constructor(v1,v2,v3)
{
  this.v1 = v1;
  this.v2 = v2;
  this.funk = function()
  {
    console.log("Test: "+ v3 );
  }
}

var obj1 = new Constructor("par1","par2","par3");
var arr = ["w1","w2","w3",obj1];

function f2()
{            
  obj1.funk(); //works ok
  console.log("test "+arr[3].funk.call() ); //doesn't work
}

3 个答案:

答案 0 :(得分:5)

调用f2()的输出是:

Test: par3
Test: par3
test undefined

从某种意义上说,funk被调用两次并记录前两行。第三行是test undefined因为funk没有返回任何内容。它被调用并记录其测试行,然后返回undefined以记录在f2函数的最后一行。

答案 1 :(得分:1)

function f2()
{            
  arr[3].funk();
}

代码工作正常但是funk()没有返回任何未定义的原因。

答案 2 :(得分:0)

这是因为您需要将上下文传递给funk。试试这个

arr[3].funk.call(arr[3])