Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript从对象表调用函数_Javascript_Arrays_Function_Object - Fatal编程技术网

Javascript从对象表调用函数

Javascript从对象表调用函数,javascript,arrays,function,object,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

我正在学习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
}

调用
f2()
的输出是:

Test: par3
Test: par3
test undefined

这很有意义,
funk
被调用两次并记录前两行。第三行是
testundefined
,因为
funk
不返回任何内容。它被调用并记录其测试行,然后返回undefined以记录在
f2
函数的最后一行中

调用
f2()
的输出是:

Test: par3
Test: par3
test undefined

这很有意义,
funk
被调用两次并记录前两行。第三行是
testundefined
,因为
funk
不返回任何内容。它被调用并记录其测试行,然后返回undefined以记录在
f2
函数的最后一行中

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

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

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

arr[3].funk.call(arr[3])
代码运行良好,但funk()不会返回任何内容,这就是为什么您会得到未定义的结果


代码工作正常,但funk()不会返回任何东西,这就是为什么您会得到未定义的结果。

arr[3]。funk()
为什么您没有使用此选项?很抱歉,我已将名称更改为arr。@Rajaprabhu Aravindasamy arr[3]。funk()会给我“未定义”不,应该可以。这是因为您没有从this.funk返回任何内容-因此字符串concat是test undefined。如果没有返回,则javascript总是从函数返回未定义的值
arr[3]。funk()
为什么不使用此值?很抱歉,我已将名称更改为arr。@Rajaprabhu Aravindasamy arr[3]。funk()给了我“undefined”不,它应该可以工作。这是因为您没有从this.funk返回任何内容-因此字符串concat是test undefined。如果没有返回值,那么javascript总是从函数返回未定义的值
funk
不使用
this
。设置它不会改变任何事情。
funk
不会利用
这个
。设置它不会改变任何事情。新手的错误。谢谢你的解释:)新手的错误。谢谢你的解释:)