javascript—为什么在运行时调用声明函数
仅仅向对象声明函数就可以调用它javascript—为什么在运行时调用声明函数,javascript,function,Javascript,Function,仅仅向对象声明函数就可以调用它 var a={}; a、 xyz=新函数(){ 警惕(“剂量测定”); }删除新的,一切都会好起来: var a = {}; a.xyz = function() { alert("dosomething"); } JSFiddle: 编辑:有关IIFE的更多信息-当您在函数定义前面放置new时,函数将立即作为构造函数调用 正如iceless所提到的,在函数定义之前不应该有new。然而,评论中提到的iceless是不正确的 新函数(){}或新函数()
var a={};
a、 xyz=新函数(){
警惕(“剂量测定”);
}
删除新的,一切都会好起来:
var a = {};
a.xyz = function() {
alert("dosomething");
}
JSFiddle:
编辑:有关IIFE的更多信息-当您在函数定义前面放置
new
时,函数将立即作为构造函数调用
正如iceless所提到的,在函数定义之前不应该有new
。然而,评论中提到的iceless是不正确的
新函数(){}或新函数(){}();将像function(){}()一样调用函数;或(函数(){}())
new function(){}
将创建匿名类型的新实例,因此在您的代码中a.xyz
是一个对象
如果将其更改为justfunction(){}()
,它将立即执行该函数,而不返回任何内容。简而言之,请参见:
new操作符使用new创建对象的实例,这就是为什么在声明之后立即执行
很快
将对匿名函数的引用放入xyz并指向函数
xyz= new function(){};
放置对匿名构造函数的新构造实例的引用,使其指向对象。尝试typeof new function(){}
,您将得到一个对象
当执行代码new函数(){alert('foo');}
时,会发生以下情况:
删除代码+1中提出此问题的新代码。不是因为我不知道答案,而是因为我不知道javascript允许匿名构造函数。这可能最终成为一种新的设计模式,我最终使用了很多。有点像生活。IIAC(立即调用的匿名构造函数)?新函数(){}与函数()不一样,如果你能解释原因,{}就好了;)@这是不正确的,看我的评论,我想我理解它的权利。我删除了我的评论:)
xyz= new function(){};