有关JavaScript创建对象的疑问

有下面一个函数:

function fntest(){
    var name="bokeyuan";
}
此时我写出下面2条语句:

1.var fntest2=fntest;

2.var fntest3=new fntest();
提问:1. 这两条语句的区别在哪里?
       2. 函数fntest是一个对象还是一个函数,为什么可以用new关键字呢?

有人能帮助我回答这2个问题吗?

谢谢大家!

喵喔喔
浏览 435回答 5
5回答

慕田峪9158850

fntest是函数,两条语句的区别,fntest2是引用了fntest函数,fntest3是创建了一个构造函数为fntest的对象。 typeof(fntest2)//function typeof(fntest3)//object

不负相思意

js中的函数构造是是用Function这个类, var  name=new function(arg1,..,function_body); 而函数的表现形式倒是多种的: 1. function aa(){} 2.var name=function(){} 表现形式不一样,但机制都是一样,都是要么直接引用函数,要么创建一个对象来应用函数。

30秒到达战场

感谢你的回答,但是好像并没有回答我的问题, 注:你写的【var  name=new function(arg1,..,function_body);】是错误的。正确的是: 【var  name=new Function(arg1,..,function_body);】 你可以试一试。

FFIVE

呵呵 嗯的。 var name=new Function("a","return a"); alert(name('test')); @易之名: 

慕勒3428872

1.区别在于:fntext2只是函数fntext的别名,fntext3通过new关键字创建一个对象(通过new关键字调用一个函数时,这个函数就是构造函数) 2.javascript中一切都是对象,函数当然也不例外,它是Function类的对象。 希望对你有帮助!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript