有下面一个函数:
function fntest(){
var name="bokeyuan";
}
此时我写出下面2条语句:
1.var fntest2=fntest;
2.var fntest3=new fntest();
提问:1. 这两条语句的区别在哪里?
2. 函数fntest是一个对象还是一个函数,为什么可以用new关键字呢?
有人能帮助我回答这2个问题吗?
谢谢大家!
fntest是函数,两条语句的区别,fntest2是引用了fntest函数,fntest3是创建了一个构造函数为fntest的对象。
typeof(fntest2)//function
typeof(fntest3)//object
追问: 我还是不明白,在JavaScript中,构造函数是如何定义的?能否说的详细些,或者给个链接。
@易之名:
不需要定义构造函数,只要是函数都可以拿来用作构造函数。var fntest3=new fntest(),fntest可以是任意函数。
追问:1.我刚才说的【构造函数是如何定义】指的是”在JavaScript中,什么叫构造函数?“。不是指声明,定义一个构造函数。
2. 在var obj=new Object(); 那是否可以说: obj是创建了一个构造函数为Object的对象?
@易之名:
任何对象.constructor,你就知道它的构造函数是什么了,具体怎么回事你找下相关的文章看看。类似:
http://bonsaiden.github.com/JavaScript-Garden/zh/
水很深的。。
js中的函数构造是是用Function这个类,
var name=new function(arg1,..,function_body);
而函数的表现形式倒是多种的:
1. function aa(){}
2.var name=function(){}
表现形式不一样,但机制都是一样,都是要么直接引用函数,要么创建一个对象来应用函数。
感谢你的回答,但是好像并没有回答我的问题,
注:你写的【var name=new function(arg1,..,function_body);】是错误的。正确的是:
【var name=new Function(arg1,..,function_body);】
你可以试一试。
呵呵 嗯的。
var name=new Function("a","return a");
alert(name('test'));
@易之名:
1.区别在于:fntext2只是函数fntext的别名,fntext3通过new关键字创建一个对象(通过new关键字调用一个函数时,这个函数就是构造函数)
2.javascript中一切都是对象,函数当然也不例外,它是Function类的对象。
希望对你有帮助!