首页 新闻 会员 周边

有关JavaScript创建对象的疑问

0
悬赏园豆:20 [已解决问题] 解决于 2012-09-21 01:29

有下面一个函数:

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

1.var fntest2=fntest;

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

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

谢谢大家!

易之名的主页 易之名 | 初学一级 | 园豆:103
提问于:2012-09-14 13:56
< >
分享
最佳答案
1

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

typeof(fntest2)//function

typeof(fntest3)//object

收获园豆:20
向往-SONG | 老鸟四级 |园豆:4853 | 2012-09-14 14:03

追问: 我还是不明白,在JavaScript中,构造函数是如何定义的?能否说的详细些,或者给个链接。

易之名 | 园豆:103 (初学一级) | 2012-09-14 14:37

@易之名: 

不需要定义构造函数,只要是函数都可以拿来用作构造函数。var fntest3=new fntest(),fntest可以是任意函数。

向往-SONG | 园豆:4853 (老鸟四级) | 2012-09-14 14:45

追问:1.我刚才说的【构造函数是如何定义】指的是”在JavaScript中,什么叫构造函数?“。不是指声明,定义一个构造函数。

        2. 在var obj=new Object(); 那是否可以说: obj是创建了一个构造函数为Object的对象?

易之名 | 园豆:103 (初学一级) | 2012-09-14 15:20

@易之名: 

任何对象.constructor,你就知道它的构造函数是什么了,具体怎么回事你找下相关的文章看看。类似:

http://bonsaiden.github.com/JavaScript-Garden/zh/

水很深的。。

向往-SONG | 园豆:4853 (老鸟四级) | 2012-09-14 15:34
其他回答(2)
0

js中的函数构造是是用Function这个类,

var  name=new function(arg1,..,function_body);

而函数的表现形式倒是多种的:

1. function aa(){}

2.var name=function(){}

表现形式不一样,但机制都是一样,都是要么直接引用函数,要么创建一个对象来应用函数。

telang | 园豆:646 (小虾三级) | 2012-09-14 14:54

感谢你的回答,但是好像并没有回答我的问题,

注:你写的【var  name=new function(arg1,..,function_body);】是错误的。正确的是:

【var  name=new Function(arg1,..,function_body);】

你可以试一试。

支持(0) 反对(0) 易之名 | 园豆:103 (初学一级) | 2012-09-14 15:29

呵呵 嗯的。

var name=new Function("a","return a");
alert(name('test'));

@易之名: 

支持(0) 反对(0) telang | 园豆:646 (小虾三级) | 2012-09-14 15:59
0

1.区别在于:fntext2只是函数fntext的别名,fntext3通过new关键字创建一个对象(通过new关键字调用一个函数时,这个函数就是构造函数)

2.javascript中一切都是对象,函数当然也不例外,它是Function类的对象。

希望对你有帮助!

三剑客 | 园豆:92 (初学一级) | 2012-09-14 16:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册