JavaScript高级程序设计--读书心得

时间:2024-11-16 13:41:40

Javascript包含ECMAScript(核心语言)和DOM(访问和操作网页内容和方法的接口)和BOM(与浏览器交互的方法和接口)

ECMAScript:浏览器是ECMAScript实现可能的宿主环境(不仅提供实现,还提供扩展如DOM)之一(可能还包括Node和Adobe Falsh)。JavaScript和Adobe ActionScript都实现了ECMAScript。

DOM:针对XML经过扩展用于HTML的API。DOM把整页映射为一个多层节点结构。通过DOM的api开发人员可以增删改查任何节点。

DOM由DOM核心(如何映射基于xml文档结构,简化对文档访问和操作)、DOM HTML(在DOM Core基础上扩展添加针对HTML的对象和方法)、鼠标和用户界面事件、范围、遍历,以及对css的支持、加载保存模块中定义,新增了验证文档方法。

BOM:控制ie显示页面以外的部分。处理ie窗口和框架。

在html中使用js

使用<script>需注意:遇到</script>可能会结束,如文档需要,可以加上转义字符<\/script>

                                        标签内部执行顺序,会从上到下依次解释

                                        放到head里面会等到js文件完全执行完才加载body元素,可以放到body后面,这样页面内容加载完毕才加载js文件

                                        尽量用外部文件来包含js代码

<script>元素属性:

         type=”text/javascript”(默认值)或”text/ecmascript”(不经常用)

                    “application/javascript”或”application/javascript”(非ie)

                    “application/x-javascript”(服务器端传送脚本,可能导致脚本被忽略)

         src:引入外部js文件,需注意,若引入外部文件,内部还有js代码,则解释内部js代码,外部将不执行。

         charset:src外部文件的字符集

         defer="defer"属性只适用于外部脚本。用途是在head标签里的js脚本不影响页面构造,脚本会被延迟到整个页面都解析完毕后再运行。即相当于告诉浏览器立即下载,但延迟执行。会遇到html结束标签再执行,最好只包含一个延迟,把延迟脚本放在页面底部仍然是最佳选择。但是延迟脚本间并一定会按照顺序执行。

         async:只适用于外部脚本。async表示异步执行外部脚本,边加载js文件页面边解析。异步脚本一定会在页面的load 事件前执行,但可能会在DOMContentLoaded 事件触发之前或之后执行。建议异步脚本不要在加载期间修改DOM。

         在不支持<script>元素的ie中隐藏js代码,就是把js代码包含在一个html注释中。<script><!--

function sayHi(){

alert("Hi!");

}

//--></script>    

         <noscript>元素:浏览器不支持脚本(替代内容);浏览器支持脚本,脚本被禁用。上面两种情况会显示noscript里面内容。

语法

         ECMAScript一切(变量、函数名、操作符)都区分大小写

         标识符:变量、函数、属性的名字、函数参数都采用驼峰大小写即第一个字母小写,剩下的每个单词首字母都大写。

         未初始化变量为undefined

         使用var在函数中定义的变量,在函数退出后被销毁

         省略var操作符在函数中定义的变量为全局变量。只要调用一次该函数,变量就有定义,可以在函数外部任何地方被访问。(在严格模式下,会报错,不建议使用)

         ECMAScript有5中简单数据类型(Undefined、Null、Boolean、Number、String)和一种复杂数据类型Object(无序键值对)

         typeof返回值:undefined(未定义)、boolean(布尔值)、string(字符串)、number(数值)、object(对象或null)、function(函数)。Eg:typeof(message)或typeofmessage都可以因为typeof是一个操纵符,不是函数,圆括号可以使用,但不是必须的。

         var message; // 这个变量声明之后默认取得了undefined 值

// 下面这个变量并没有声明

// var age

alert(message); // "undefined"

alert(age); // 产生错误

 

var message; // 这个变量声明之后默认取得了undefined值

// 下面这个变量并没有声明

// var age

alert(typeof message); // "undefined"

alert(typeof age); // "undefined"

Null类型:空对象指针,因此使用typeof操作符检测返回object。如果将来变量用来保存对象,最好将该变量初始化为null。Undefined值派生自null,进行==判断结果为true

Boolean类型:ECMAScript所有类型都可以转化为boolean,可用转型函数Boolean();

非空字符串、非零数字、任何对象、都会返回true。空字符串、0、null、undefined会返回false。

Number类型:八进制第一位为0、十六进制前两位为0x。

String类型:可用“或’。字符串一旦创建值不可改变,改变的是引用,销毁原来字符串,引向新的字符串。Null和undefined没有tostring方法可以用String返回这两个值的字面量。

Object类型:ECMAScript中对象是一组数据和功能的集合。