我有以下代码,
function MyFunc(){}
var myFunc = new MyFunc();
myFunc(); // through TypeError this line,
如果我想通过变量调用函数,我怎样才能使它工作?
答案 0 :(得分:6)
通过执行new MyFunc()
,您将MyFunc
视为构造函数,并使用它创建一个对象。这是将MyFunc
视为您想要实例的类。您只想指定另一个变量来指向该函数,因此您不需要new
或()
。
您只想设置var myFunc = MyFunc
,然后调用myFunc()
即可。
答案 1 :(得分:2)
在JavaScript中,函数是第一类对象。要引用该对象,只需使用函数名称。因此,如果您只想通过MyFunc
变量拨打myFunc
,只需将MyFunc
分配给myFunc
:
function MyFunc(){}
var myFunc = MyFunc; // <=== Change on this line
myFunc();
你原来的一行:
var myFunc = new MyFunc();
...调用MyFunc
作为构造函数,myFunc
(变量)将接收对作为结果创建的任何对象的引用。 (就像说,var now = new Date();
创建一个Date
对象并将其分配给now
。)
答案 2 :(得分:1)
在javascript中,函数只是另一个变量。
function MyFunc(){}
与
相同var MyFunc = function(){};
因此这也是有效的
function MyFunc(){}
var myfunc = MyFunc;
myfunc();
答案 3 :(得分:1)
您创建了使用new关键字创建对象的函数的对象
var myfun_var = function MyFunc(){
alert("hello");
}
and call myfun_var();
答案 4 :(得分:1)
所以调用new MyFunc()
会执行你放在那里的任何代码 - 它的行为有点像其他语言的构造函数 - 虽然不完全正确。
如果它不是拼写错误,你想在你的类上定义一个名为myFunc的函数,如果你想要做类似的事情
MyFunc.prototype.myFunc = function() {
}
答案 5 :(得分:1)
我认为你想要的是:
var myFunc = function(){
....
};
myFunc();
这将创建一个名为myFunc
的变量,它是对匿名函数的引用。
答案 6 :(得分:1)
var myFunc = function (){ alert("YES"); }
myFunc();
答案 7 :(得分:-2)
案件不符合。 Javascript区分大小写。