时间:2009年03月26日作者:愚人码头查看次数:2,393 views评论次数:0
闭包时是指内层的函数可以引用存在与包围他的函数内的变量,即使外层的函数的执行已经终止。功能不是一般的强大和复杂啊。
了解闭包必须首先了解变量的作用域:全局变量和局部变量(可以查看http://www.css88.com/article.asp?id=468)
闭包使代码更清晰,我们看一个离职:
XML/HTML代码
- <!DOCTYPE html PUBLIC ”-//W3C//DTD XHTML 1.0 Transitional//EN” ”http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
- <html xmlns=“http://www.w3.org/1999/xhtml”>
- <head>
- <meta http-equiv=“Content-Type” content=“text/html; charset=utf-8″ />
- <title>Untitled Document</title>
- </head>
- <body>
- <div id=“main”>我的闭包测试!</div>
- <script type=“text/javascript”>
- var obj=document.getElementById(“main”);
- obj.style.border=“1px #cdcdcd solid”;
- setTimeout(function(){
- obj.style.border=“1px #ff0000 solid”;
- },4000);
- function alertMsg(msg,time){
- setTimeout(function(){
- alert(msg);//这个参数msg就是引用了alertMsg(msg,time)中的参数msg
- },time);
- }
- alertMsg(“我是css88.com站长:愚人码头”,2000);
- </script>
- </body>
- </html>
用个闭包实现函数的Curry化,例子:
JavaScript代码
- function addNum(num){
- return function(toAdd){
- return num+toAdd;
- };
- }
- var addFive=addNum(5);
- alert(addFive(5));
使用匿名函数来隐藏全局作用域变量的例子:
JavaScript代码
- (function(){
- var msg=“my name is feiwen.”;
- window.onload = setTimeout(function(){
- alert(msg);
- },3000);
- })();
使用匿名函数来激发创建多个使用闭包的函数所需的作用域
JavaScript代码
- var obj=document.getElementById(“main”);
- var items=["click","keypress"];
- for(var i=0;i<items.length; i++){
- (function(){
- var item=items[i];
- obj["on"+item]=function(){
- alert(“what is you doing:”+item);
- }
- })();
- }
时间:2009年03月26日作者:愚人码头查看次数:4,250 views评论次数:0
全局变量是个魔鬼,令人头痛。据说庞大的YUI只用了两个全局变量,真是令人赞叹!
JavaScript 有两种变量:全局变量和局部变量。
如果在任何函数定义之外声明了一个变量,则该变量为全局变量,且该变量的值在整个持续范围内都可以访问和修改。
如果在函数定义内声明了一个变量,则该变量为局部变量。每次执行该函数时都会创建和破坏该变量;且它不能被该函数外的任何事物访问。
局部变量一定要以var申明,否则是全局变量。
像 C++ 这样的语言也有“块范围”。在这里,任何一对“{}”都定义新的范围。JavaScript 不支持块范围。
一个局部变量的名称可以与某个全局变量的名称相同,但这是完全不同和独立的两个变量。因此,更改一个变量的值不会影响另一个变量的值。在声明局部变量的函数内,只有该局部变量有意义。
例:
JavaScript代码
- function square(num){
- total=num*num;
- return total;
- }
- val total=50;
- val number=square(20);
- alert(total);
这些代码将导致全局变量total的值发生变化。
把这个函数写成这样才是正确的:
JavaScript代码
- function square(num){
- var total=num*num;
- return total;
- }
又如:
JavaScript代码
- <script>
- var cookie=“i am cookie”;
- function test(){
- var cookie=“i am not fei cookie”;//定义局部变量的值,test函数执行后不会影响到全局的cookie
- }
- test();
- document.write(cookie);
- </script>
-
去掉test()函数中变量var 如下:
JavaScript代码
- <script>
- var cookie=“i am cookie”;
- function test(){
- cookie=“i am not fei cookie”;//修改全局变量的值
- }
- test();
- document.write(cookie);
- </script>//////test函数执行后输出 i am not fei cookie
-
在函数中并且不加var 如何改变全局变量?如下:
JavaScript代码
- <script>
- var cookie=“i am cookie”;
- function test(){
- var cookie=“i am not fei cookie”;//定义局部变量的值,test函数执行后不会影响到全局的cookie
-
- window.cookie=cookie;
- }////利用window.变量
- test();
- document.write(cookie);
- </script> /////输出 i am not fei cookie
时间:2009年03月26日作者:愚人码头查看次数:2,476 views评论次数:0
typeof运算符介绍:
typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型。
它返回值是一个字符串,该字符串说明运算数的类型。
你知道下面typeof运算的结果吗?
typeof(1);
typeof(NaN);
typeof(Number.MIN_VALUE);
typeof(Infinity);
typeof(“123″);
typeof(true);
typeof(window);
typeof(document);
typeof(null);
typeof(eval);
typeof(Date);
typeof(sss);
typeof(undefined);
看看你会几个?
如果看了以后,不是很明白的话,请看下面(明白的人就不用往下看了):
typeof是一个一元运算符,它返回的结果始终是一个字符串,对不同的操作数,它返回不同的结果。
具体的规则如下:
一、对于数字类型的操作数而言, typeof 返回的值是 number。比如说:typeof(1),返回的值就是number。
上面是举的常规数字,对于非常规的数字类型而言,其结果返回的也是number。比如typeof(NaN),NaN在
JavaScript中代表的是特殊非数字值,虽然它本身是一个数字类型。
在JavaScript中,特殊的数字类型还有几种:
Infinity 表示无穷大特殊值
NaN 特殊的非数字值
Number.MAX_VALUE 可表示的最大数字
Number.MIN_VALUE 可表示的最小数字(与零最接近)
Number.NaN 特殊的非数字值
Number.POSITIVE_INFINITY 表示正无穷大的特殊值
Number.NEGATIVE_INFINITY 表示负无穷大的特殊值
以上特殊类型,在用typeof进行运算进,其结果都将是number。
二、对于字符串类型, typeof 返回的值是 string。比如typeof(“123″)返回的值是string。
三、对于布尔类型, typeof 返回的值是 boolean 。比如typeof(true)返回的值是boolean。
四、对于对象、数组、null 返回的值是 object 。比如typeof(window),typeof(document),typeof(null)返回的值都是object。
五、对于函数类型,返回的值是 function。比如:typeof(eval),typeof(Date)返回的值都是function。
六、如果运算数是没有定义的(比如说不存在的变量、函数或者undefined),将返回undefined。比如:typeof(sss)、typeof(undefined)都返回undefined。
看完了六条规则,再回头看一下,是不是很简单了……
下面我们将用程序代码验证一下:
JavaScript代码
- document.write (“typeof(1): ”+typeof(1)+“<br>”);
- document.write (“typeof(NaN): ”+typeof(NaN)+“<br>”);
- document.write (“typeof(Number.MIN_VALUE): ”+typeof(Number.MIN_VALUE)+“<br>”)
- document.write (“typeof(Infinity): ”+typeof(Infinity)+“<br>”)
- document.write (“typeof(\”123\”): ”+typeof(“123″)+“<br>”)
- document.write (“typeof(true): ”+typeof(true)+“<br>”)
- document.write (“typeof(window): ”+typeof(window)+“<br>”)
- document.write (“typeof(document): ”+typeof(document)+“<br>”)
- document.write (“typeof(null): ”+typeof(null)+“<br>”)
- document.write (“typeof(eval): ”+typeof(eval)+“<br>”)
- document.write (“typeof(Date): ”+typeof(Date)+“<br>”)
- document.write (“typeof(sss): ”+typeof(sss)+“<br>”)
- document.write (“typeof(undefined): ”+typeof(undefined)+“<br>”)
运行结果为:
typeof(1): number
typeof(NaN): number
typeof(Number.MIN_VALUE): number
typeof(Infinity): number
typeof(“123″): string
typeof(true): boolean
typeof(window): object
typeof(document): object
typeof(null): object
typeof(eval): function
typeof(Date): function
typeof(sss): undefined
typeof(undefined): undefined
时间:2009年03月26日作者:愚人码头查看次数:2,735 views评论次数:0
函数重载必须依赖两件事情:判断传入参数数量的能力和判断传入参数的参数类型的能力
1.判断传入参数数量的能力
js判断传入参数数量可以用arguments.length这个属性来判断;
JavaScript代码
- function sendMsg(msg,obj){
- if(arguments.length==2)//判断参数的个数;
- obj.handleMsg(msg);
- else
- alert(msg);
- }
- sendMsg(“this site is http://www.css88.com”);
- sendMsg(“what is your site?”,{
- handleMsg : function(msg){
- alert(“My question is:”+“\”"+msg+“\”");
- }
- });
2.判断传入参数类型的能力
js判断传入参数类型的方有2种:typeof和constructor;
1.typeof
关于typeof的介绍可以查看:http://www.css88.com/article.asp?id=467
下面我们使用type0f来判断对类型的一个例子:
JavaScript代码
- var num=“123″;
- var arr=“1,2,3,4″;
- if(typeof num==“string”)
- num = parseInt(num);
- alert(typeof num);
- if(typeof arr==“string”)
- arr = arr.split(“,”);
- alert(arr.length);
2.constructor
查看例子:
JavaScript代码
- var num=“123″;
- var arr=“1,2,3,4″;
- if(num.constructor==String)
- num = parseInt(num);
- alert(typeof num);
- if(arr.constructor==String)
- arr = arr.split(“,”);
- alert(arr.length);
时间:2009年03月26日作者:愚人码头查看次数:3,030 views评论次数:0
引用是js面向对象的基本概念之一。它是一个指向对象实际位置的指针。实际的对象肯定不会是引用。比如字符串永远是字符串,不过多个变量能够指向同一个对象。
对象可以中有多个原型属性(property)(关于更多的property可以查看:http://www.css88.com/article.asp?id=454,http://www.css88.com/article.asp?id=449),其实这些属性就是对其他对象的引用。例如:
JavaScript代码
-
- String.prototype.len=function(){
- var str=this;
- return str.replace(/[^\x00-\xff]/g, “**”).length
- }
例子,多个变量应用同一个对象:
JavaScript代码
-
- var obj=new Object();
- var objB=obj;
- obj.oneproprety=true;
- alert(obj.oneproprety===objB.oneproprety);
例子,自修改对象:
JavaScript代码
- var Items=new Array(“1″,“2″,“3″);
- var ItemRef=Items;
- Items.push(“4″);
- alert(“Items数组长度是:”+Items.length);
- alert(“ItemRef数组长度是:”+ItemRef.length);
引用指向的只能是具体的对象,当具体对象改变的时候,引用还是引用原来的对象,而不是改变后的对象。
请看例子:
JavaScript代码
- var Items=new Array(“1″,“2″,“3″);
- var ItemRef=Items;
- Items=new Array(“1″,“2″,“3″,“4″);
- alert(“Items数组长度是:”+Items.length);
- alert(“ItemRef数组长度是:”+ItemRef.length);
时间:2009年03月26日作者:愚人码头查看次数:4,929 views评论次数:3
声明:本人不是阿里巴巴的员工。文档来源:http://www.f-dev.com/381
阿里巴巴中文站前端开发团队HTML培训PPT文档主要是关于HTML的版本,标准,特别是html语义方面的,文档制作的很漂亮,

阿里巴巴中文站前端开发团队HTML培训PPT文档下载:http://www.fs2you.com/files/c49b956e-5995-11dd-bc33-001143e7b41c/
时间:2009年03月26日作者:愚人码头查看次数:3,187 views评论次数:1
时间:2009年03月26日作者:愚人码头查看次数:2,468 views评论次数:0
时间:2009年03月26日作者:愚人码头查看次数:2,548 views评论次数:0
你思考过每个元素名的全称问题吗?也许出于习惯,很少想这个问题,例如,p表示段落,那么p的本意是什么呢?它是什么词的缩写呢?也许你知道p是段落(paragraph)的缩写,那么其他元素的名称呢?
今天琢磨这个问题,故在网上狂找了半天,但是很遗憾居然没有找到相关资料,偶尔看到几个零散的提示,但是没有系统研究的资料,大家都在谈论HTML的语义性,但是连最基本的元素的原义是什么都没有搞清,何谈语义化。故下点功夫整理一下,最后汇集一个HTML元素名全称的原义表,仅作为参考,可能还很不全面,或者理解偏差,请有识之士PP。
div 语义:Division(分隔)
span 语义:Span(范围)
ol 语义:Ordered List(排序列表)
ul 语义:Unordered List(不排序列表)
li 语义:List Item(列表项目)
dl 语义:Definition List(定义列表)
dt 语义:Definition Term(定义术语)
dd 语义:Definition Description(定义描述)
del 语义:Deleted(删除(的文本))
ins 语义:Inserted(插入(的文本))
h1~.h6 语义:Header 1 to Header 6(标题1到标题6)
p 语义:Paragraph(段落)
hr 语义:Horizontal Rule(水平尺)
a 语义:Anchor(锚)
abbr 语义:Abbreviation(缩写词)
acronym 语义:Acronym(取首字母的缩写词)
address 语义:Address(地址)
dfn 语义:Defines a Definition Term(定义定义条目)
kbd 语义:Keyboard(键盘(文本))
samp 语义:Sample(示例(文本))
var 语义:Variable(变量(文本))
tt 语义:Teletype(打印机(文本))
code 语义:Code(源代码(文本))
pre 语义:Preformatted(预定义格式(文本))
blockquote 语义:Block Quotation(区块引用语)
cite 语义:Citation(引用)
q 语义:Quotation(引用语)
strong 语义:Strong(加重(文本))
em 语义:Emphasized(加重(文本))
b 语义:Bold(粗体(文本))
i 语义:Italic(斜体(文本))
big 语义:Big(变大(文本))
small 语义:Small(变小(文本))
sup 语义:Superscripted(上标(文本))
sub 语义:Subscripted(下标(文本))
bdo 语义:Direction of Text Display(文本显示方向)
br 语义:Break(换行)
center 语义:Centered(居中(文本))
font 语义:Font(字体)
u 语义:Underlined(下划线(文本))
s 语义:Strikethrough(删除线)
strike 语义:Strikethrough(删除线)
最新评论
可惜不能辞工。。。
Post:2012-05-14 22:24:43群都满了,求入群。 319031954.
Post:2012-05-14 16:41:39可惜不在广州
Post:2012-05-12 16:10:54厉害,受益匪浅!
Post:2012-05-12 13:48:02又在招人。可惜不是我。
Post:2012-05-12 11:50:12很好很好verygood
Post:2012-05-10 10:58:33json官方的定义是 A collection of »
Post:2012-05-09 20:23:49前端爱好者求入群啊 作品地址:http »
Post:2012-05-09 14:32:41