鸟食轩
Microsoft .NET[C#] MVP 2003
随笔 - 332, 文章 - 870, 评论 - 5722, 引用 - 356
function, new function, new Function
函数是JavaScript中很重要的一个语言元素,并且提供了一个function关键字和内置对象Function,下面是其可能的用法和它们之间的关系。
使用方法一:
var
foo01
=
function
()
//or fun01 =
function
()
{
var
temp
=
100
;
this
.temp
=
200
;
return
temp
+
this
.temp;
}
alert(
typeof
(foo01));
alert(foo01());
运行结果:
function
300
最普通的function使用方式,定一个JavaScript函数。两种写法表现出来的运行效果完全相同,唯一的却别是后一种写法有较高的初始化优先级。在大扩号内的变量作用域中,
this
指代foo01的所有者,即window对象。
使用方法二:
var
foo02
=
new
function
()
{
var
temp
=
100
;
this
.temp
=
200
;
return
temp
+
this
.temp;
}
alert(
typeof
(foo02));
alert(foo02.constructor());
运行结果:
object
300
这是一个比较puzzle的function的使用方式,好像是定一个函数。但是实际上这是定一个JavaScript中的用户自定义对象,不过这里是个匿名类。这个用法和函数本身的使用基本没有任何关系,在大扩号中会构建一个变量作用域,
this
指代这个作用域本身。
使用方法三:
var
foo3
=
new
Function(
'
var
temp
=
100
;
this
.temp
=
200
;
return
temp
+
this
.temp;');
alert(
typeof
(foo3));
alert(foo3());
运行结果:
function
300
使用系统内置函数对象来构建一个函数,这和方法一中的第一种方式在效果和初始化优先级上都完全相同,就是函数体以字符串形式给出。
使用方法四:
var
foo4
=
Function('
var
temp
=
100
;
this
.temp
=
200
;
return
temp
+
this
.temp;');
alert(
typeof
(foo4));
alert(foo4());
运行结果:
function
300
这个方式是不常使用的,效果和方法三一样,不过不清楚不用
new
来生成有没有什么副作用
,这也体现了JavaScript一个最大的特性:灵活!能省就省。
关于函数初始化优先级这个问题,可以参看:"
JS类定义原型方法的两种实现的区别
"的回复。
绿色通道:
好文要顶
关注我
收藏该文
与我联系
posted on 2005-03-09 00:11
birdshome
阅读(5263)
评论(11)
编辑
收藏
评论
1585146
#1楼
回复
引用
看了Birdshome受益非淺
2005-03-09 10:47
|
Bill
#2楼
回复
引用
方法四相当于强制类型转换: 将String转为Function
2005-03-18 14:37
|
麻袋
#3楼
回复
引用
想不到啊想不到,以小小的function就有这么多的玩发,冒个泡,然后继续学习。
2005-03-23 21:01
|
Fox
#4楼
回复
引用
var setWidth=new Function('dogColor','dogWidth','this.dogWidth=dogWidth;');
alert(setWidth);
//-------------------------
这好像不是个匿名类,只是alert(setWidth);打印出的信息是:
function anonymous(dogColor,dogWidth){
this.dogColor=dogColor;
}
2005-12-15 12:58
|
baijian_8d[未注册用户]
#5楼
[
楼主
]
回复
引用
查看
@baijian_8d
你到底要说的是 new Function 还是 new function ? F or f ?
2005-12-15 17:18
|
birdshome
#6楼
回复
引用
function和Function 区分大小写吗?
2006-01-27 09:51
|
yi_@[未注册用户]
#7楼
回复
引用
//经常遇到的写法
function foo01() //new function foo01()
{
var temp = 100;
this.temp = 200;
return temp + this.temp;
}
alert(typeof(foo01));
alert(foo01());
运行结果:
function
300
好像和第一种方法效果相同
可以将
this.foo02 = new function()
{
}
加到里面 有些象java的一个类
2006-01-27 10:20
|
yi_@[未注册用户]
#8楼
回复
引用
楼主写的很乱,特别是方法二存在严重误导。方法三和方法四是完全等同的。但是方法三与方法一有很大不同。初学者们最好当作没看过这篇文章,省得被误导。
2007-08-30 16:45
|
hax[未注册用户]
#9楼
回复
引用
@hax
楼上这位高人,你知道搂主的错误请指出来呀,让我们学习学习。这样唧唧歪歪算啥啊?真是没想到Javaeye也有你这样的恶心人。
2007-09-12 12:53
|
luoli[未注册用户]
#10楼
回复
引用
不错的资料
2007-09-17 11:00
|
htmlcss[未注册用户]
#11楼
回复
引用
查看
大家被楼主误导了
首先,function和Function这关键字也是一样,没差的
*第二,new是一个很重要的关键字
*第三,如果function写作第3,4式,效率很低,就像eval般,这是不建议使用的
加new的应用有,getDate
getDate虽然是一个function,但是new getDate传回的却是一个object
而这object就可以包含属性
2009-07-15 11:16
|
roviury
注册用户登录后才能发表评论,请
登录
或
注册
,
返回博客园首页
。
首页
博问
闪存
新闻
园子
招聘
知识库
最新IT新闻
:
·
最想要的Entity Framework功能
·
专访Jeffrey Richter:Windows 8是微软的重中之重
·
《福布斯》:谷歌进军硬件产品 难撼动苹果地位
·
美国空军拟最多购买1.8万台iPad 2
·
分析称专利之争让谷歌苹果两败俱伤
»
更多新闻...
最新知识库文章
:
·
高级编程语言的发展历程
·
如何学习一门新的编程语言?
·
学习不同编程语言的重要性
·
为什么我喜欢富于表达性的编程语言
·
计算机专业的女生为什么要学编程
»
更多知识库文章...
China-pub 2011秋季教材巡展
China-Pub 计算机绝版图书按需印刷服务
导航
博客园
首页
新随笔
联系
订阅
管理
公告
Invert
原创
技术文章和心得,
转载
必须注明来源
"博客园"
!
贴子以"现状"提供,且没有任何担保,同时也没有授予任何权利。
昵称:
birdshome
园龄:
7年10个月
荣誉:
推荐博客
粉丝:
73
关注:
3
搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
我的标签
Nokia 6300
(2)
fan
(1)
qq
(1)
腾讯
(1)
输入法
(1)
隐私
(1)
随笔分类
(337)
.NET的私有工具类(2)
(rss)
.NET技术开发相关(34)
(rss)
Asp.net控件开发(14)
(rss)
Debug中的滑铁卢(9)
(rss)
Enjoy Computer :)(27)
(rss)
Jscript&Dhtml开发(162)
(rss)
技术区里的非技术(49)
(rss)
开发中遇到的虫子(14)
(rss)
其它编程相关内容(16)
(rss)
商务智能(BI)开发(10)
(rss)
文章分类
(147)
北京的幸福生活(29)
(rss)
不得不转载(19)
(rss)
乖乖的文章(6)
(rss)
那时还没有blog(4)
(rss)
那是相当八卦(10)
(rss)
手机短信息(1)
(rss)
我们的文章(40)
(rss)
珍贵照片的背景(4)
(rss)
重庆的幸福生活(34)
(rss)
相册
2005 Kick Off @ 涞滩
2006 Kick Off @ 钓鱼城
2006 Offsite @ 四面山
2006 Wedding @ 昆明
2007 Marriage @ 哈尔滨
2007 Offsite @ Thailand
2007 Offsite @ 海南云天
2007 Training @ Seattle
2007 Travelling @ 云南
2008 Travelling @ 天津
乱七八糟的收集
Ex-Colleagues
Jason Lei's Space
.Net Life
(rss)
Jasper
(rss)
Michelles Space
xingd.net
(rss)
玻璃缸
(rss)
短鲷生活
海阔天空
录一室
(rss)
完美的泡菜
(rss)
怡红公子
(rss)
竹叶尖的BLOG
常用链接
Engadget 中文版
PDFCHM eBooks
SitePoint Forums
The Code Project
安利上海直销店
哈尔滨工业大学
哈工大紫丁香
海归论坛
(rss)
沙坪坝区中医院
兄弟情深
没有可乐的日子
葡萄树下不乘凉
(rss)
斯普特尼克
猪头小队长
(rss)
积分与排名
积分 - 3145044
排名 - 6
最新评论
阅读排行榜
推荐排行榜