导航

Javascript实践总结(一)

Posted on 2009-07-22 19:52  鸡尾虾的壳  阅读(907)  评论(0编辑  收藏  举报

前言:
     之前简单的用过Javascript,感觉这是一种很简单的语言。最近看了一些关于Javascript的内在机制和面向对象特征的博客后,觉得自己得重新认识这种语言了。
JS的本质是基于哈希散列表实现的解释性弱类型语言。这样特性造就了它可以比纯面向对象语言灵活很多。理解Javascript的本质后,回头再看复杂的脚本,发现它们已经很简单了。对于Javascript的初学者,推荐"Inside JavaScript"这本书。

1. Script的执行顺序问题
    Javascript脚本是嵌入在客户端的HTML中执行的。在<HEAD>中的脚本先于<BODY>中执行。一般来说,放在前面的脚本会先执行,不过一些被事件触发执行的脚本执行顺序会被提前。

2. 脚本的几种常用形式
      //最常用
     <SCRIPT LANGUAGE="JavaScript">
     </SCRIPT>
    
     //引用外部脚本
     <SCRIPT LANGUAGE="JavaScript" SRC="www.myjavascripts/steve/script.js">
      </SCRIPT>

     //事件响应中的inline脚本
      <BODY ONLOAD="alert('All loaded.')">
        <H1>Executing Scripts After a Document Loads</H1>
     </BODY>
     
      //特定Element的特定事件的响应脚本,这种特殊脚本不会默认执行
     <SCRIPT FOR="button1" EVENT="onclick" LANGUAGE="JavaScript">
            alert("You clicked the button!")
     </SCRIPT>
     <FORM NAME="form1">
            <INPUT TYPE="BUTTON" NAME="button1" VALUE="Click Me!">
      </FORM>

3. 系统window对象和document对象
     window对象代表客户端显示出来的整个窗体页面。document对象代表窗体页面的content。它们都是基于W3C的DOM模型,这样可以很好的屏蔽不同浏览器对JS支持上的差别。浏览器对象都是由属性,方法和事件构成的。

4. document对象的含义
     <BODY>
        <H1>Here we go!</H1>
        <SCRIPT LANGUAGE="JavaScript">
             document.write("Hello from JavaScript!")
        </SCRIPT>
       <H1>Hello!</H1>
    </BODY>
    在这段脚本中,两个H1元素都是document中的元素。整个document在浏览器中现实的内容都存储在一个内存流中。document.write("Hello from JavaScript!")的作用是在浏览器页面中输出"Hello from JavaScript!",前后的两个H1元素的内容也是流的一部分。

5. 脚本执行错误
   JS没有编译过程中的类型检查,所以在运行过程中很容易出现错误。对于没有被捕获或者被错误事件处理的错误,浏览器会弹出对话框提示。

6. 服务器端脚本
    <SERVER>
            write(request.ip)
     </SERVER>
     //这段在IE中好像无法正确执行

7.JS中的浏览器对象
   最顶层的是window, 次级是location, document,history,frame。document之下包括anchor,form,link等。

8. JS中的内建对象类型
   String,Number,Boolean,Null,Object,Function。本质上Function是一种特殊的Object类型。

9.变量
   通过var进行声明,可以把数组,String,Object,Function随意的赋值给变量。开发者需要特别注意JS的质量,因为它是一种弱类型的解释性语言。

10.Array
   数组中可以存储任意类型的数据。通过下标Index或者名称字符串访问。也可以通过new关键字创建。

11. 和其他语言类似,支持if, switch, 算术操作符号,逻辑操作符等。

12. 支持for, for...in语句,支持while, do---while
      for (var property in document) {
                document.write(property + ": " + document[property] + "<BR>")
      //访问document对象中的所有属性

13.支持with
     with(Math){
                document.write("cos(pi) = " + cos(PI) + "<BR>")
                document.write("sqrt(4) = " + sqrt(4) + "<BR>")
      }
      //表达式的前缀都是Math

14. Function
    函数可以通过new来构造,这也正式说明了函数也是一个对象。函数对象的属性包括arguments,arguments.callee, arguments.caller,constructor。方法包括apply, call,这两个方法用来转换Function的Context Object,很有趣。

15. this关键字
    代表当前Context Object。

16. JS内建函数
    包括encodeURI,decodeURI这两个HTML URI编码解码的函数,以及eval这个把string转化为JS语句来执行的函数。

17. 处理Error
    通过window的onerror事件来处理,或者通过try-catch-finally。支持throw抛出错误。

18. document.close( ), window.close( )的区别
   window.close( )表示关闭当前窗体,系统会弹出确认对话框。document.close( )用来表示document的内容流禁止写入,一般用于window.open, document.open之后。对于close( )函数,如果用在inline script中,表示document.close( );否则表示window.close( )。