Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.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 - Fatal编程技术网

Javascript 如何通过变量调用函数?

Javascript 如何通过变量调用函数?,javascript,Javascript,我有下面的代码 function MyFunc(){} var myFunc = new MyFunc(); myFunc(); // through TypeError this line, 如果要通过变量调用函数,如何使其工作?大小写不匹配。Javascript区分大小写。在Javascript中,函数只是另一个变量 function MyFunc(){} 与 var MyFunc = function(){}; 因此,这也是正确的 function MyFunc(){} var m

我有下面的代码

function MyFunc(){}
var myFunc = new MyFunc();
myFunc();  // through TypeError this line,

如果要通过变量调用函数,如何使其工作?

大小写不匹配。Javascript区分大小写。

在Javascript中,函数只是另一个变量

function MyFunc(){}

var MyFunc = function(){};
因此,这也是正确的

function MyFunc(){}
var myfunc = MyFunc;
myfunc();
通过执行
newmyfunc()
,您将
MyFunc
视为一个构造函数,并使用它创建一个对象。这将
MyFunc
视为一个您想要作为其实例的类。您只需要指定另一个变量来指向函数,因此不需要新的
()


您只需设置
var myFunc=myFunc
,然后调用
myFunc()
就可以了。

您创建了函数的对象,新关键字用于创建对象

var myfun_var = function MyFunc(){
       alert("hello");
}

and call myfun_var();

因此,调用
new MyFunc()
将执行您在其中输入的任何代码-它的行为有点像其他语言中的构造函数-尽管不完全一样

如果不是输入错误,并且您想在类上定义一个名为myFunc的函数

MyFunc.prototype.myFunc = function() {
}

我想你想要的是:

var myFunc = function(){
    ....
};

myFunc();
这将创建一个名为
myFunc
的变量,该变量是对匿名函数的引用。


在JavaScript中,函数是一级对象。要引用对象,只需使用函数名。因此,如果您只想通过
MyFunc
变量调用
MyFunc
,只需将
MyFunc
赋值给
MyFunc

function MyFunc(){}
var myFunc = MyFunc; // <=== Change on this line
myFunc();

…将
MyFunc
作为构造函数调用,并且
MyFunc
(变量)将收到对作为结果创建的任何对象的引用。(就像,比如说,
var now=new Date();
创建一个
Date
对象并将其分配给
now

你是说myFunc,我想通过变量myFunc调用函数,而不是直接调用myFunc。“…与…”不,不是。第一个是函数声明,第二个是函数表达式,两者之间有很大的区别。它们在语法上在不同的地方有效,它们在不同的时间被处理,并且它们对它们所在的范围有不同的影响。因此,您能否进一步解释一下
var myFunc=myFunc()
,这一行创建了什么对象?它执行函数
myFunc()
并将函数的返回结果分配给
myFunc
变量,就像
var el=document.getElementById(“header”)
会。@jfriend00,但MyFunc()的函数中没有return语句,这是否意味着MyFunc将接收空指针?@Thomson:您的意思是
var MyFunc=new MyFunc()?通过
new
调用函数时,JavaScript引擎会创建一个空白对象,从
MyFunc.prototype
分配其原型,然后使用
this
集调用
MyFunc
,以引用新对象。在正常过程中,
MyFunc
将使用
this
初始化某些属性,而
new
表达式的结果将是创建的对象。(有可能是
MyFunc
导致新对象被丢弃,并使
new
表达式的结果引用另一个对象,但这既高级又不同寻常。)@Thomson:If
MyFunc
不返回值,只要调用它(
x=MyFunc();
),
x
将接收
未定义的
(非
null
)。如果您通过
new
x=new MyFunc();
)调用它,
x
将收到对
new
创建的对象的引用(请参见上面我的重叠注释)。
function MyFunc(){}
var myFunc = MyFunc; // <=== Change on this line
myFunc();
var myFunc = new MyFunc();