我正在学习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
}
答案 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])