《Javascript学习指南》 读书笔记

本文深入探讨了JavaScript的基础概念,包括函数作为对象、BOM与DOM、变量与数据类型、流控制、基本类型对象、日期对象、函数应用、浏览器调试、对象与属性、Ajax原理与实现,以及JSON和XMLHttpRequest等关键内容。

注:笔记中的页码均对应pdf电子书中的数字页码,非纸书中的实际页码

javascript 中 函数也可以作为一个对象

两个名词:
BOM(Browser object model) 浏览器对象模型
DOM(Document object model) 文档对象模型

变量的定义:
利用var定义局部变量,只能在定义的函数内部使用。如果去掉关键字var,变量就变成全局变量
(尽量少用全局变量,命名重复时会很麻烦)

数据类型:
松散类型:同一个程序中,相同的变量可以保存不同的数据类型
数据类型:
字符串(用单引号 或 双引号 都可以)
数字(可以是十进制的浮点数,科学计数法的数值、也可以是十六进制数)
布尔
(每种基本数据类型 会 对应一种内建对象,带有各自的属性和方法)

双重否定符:!! 可以显式地将非boolean类型的变量转换为布尔值
         如: var strName = "Someletters"
          var boolName = !!strName    //这个变量的值将是 true

常量的定义,用关键字const : const NAME = "Someletters"      NAME 就不再是一个变量,不能再赋值
                     常量尽可能是全局常量,且命名用全部字母大写

在javascript中,3/2的计算结果不取整,而是1.5的浮点数

弱类型的体现:
如果只是判断值得相等 ,只需要用两个等号,不需要转换数据类型,例:3==3 和 3==“3” 是等效的
如果要判断的数据的值和类型都相同,则需要用三个等号,例:3===“3” 则是错的,返回false
同理,用 != 表示不相等,而用 !== 表示不相同
同理,大于、小于、等的关系操作符也会自动进行类型的转换再进行比较。仅限引号内部是数字时
注意:当操作符是 + 号时,如果+前出现的是字符串,则会把数字变为字符串再拼接,与java一致!

流控制:
在javascript中:

                switch(变量){
                    case xx:
                } //其中的变量可以是字符串类型

**提高程序性能:
逻辑判断遵循 最短路径 的原理,所以编写程序的时候,碰到与 或 语句时,第一个判断式有讲究。
例如,通常将判断变量是否为空作为 逻辑判断的 第一个表达式 p75

基本类型的对象:

    1. var myName = "Someletters";                 //隐式地创建一个String对象,用完后销毁
    2. var myName = new String("Someletters");     //显式地创建String对象
以上两种方法下,myName可以调用String内建对象自带的方法

Boolean对象可以用数字 1  或  0 来初始化,如:
      Boolean flag = new Boolean(0)  等价于   Boolean flag = new Boolean(false)
也可以用字符串来对Boolean对象初始化(空字符串等价于false,非空则为true),如:
      Boolean flag = new Boolean("false")  等价于 Boolean flag = new Boolean(true)
3. 关于数字对象 Number及其方法,如:数字格式(保留几位小数)、数字进制转换 参见 P88

4. 字符串对象 可以通过 split 方法来分割,返回得到一个数组

日期对象:
可以通过格式正确的字符串来 创建日期对象,如:
var newDate = new Date(“March 12,1992 12:20:01”);
var newDate = new Date(‘March 12 1992’);
三个静态方法:Date.now(当前日期和时间) Date.parse(毫秒数) Date.UTC(将日期转为毫秒数) P102

函数:
Javascript中的函数可以像 对象一样使用,如将其输出、赋值给某个变量或数组、作为参数去传递

javascript函数类型:
显示声明的函数
匿名函数

浏览器调试:
Firebug调试:step over单步执行时,遇到有子函数的函数时,不进入子函数
step into单步执行时,遇见子函数就进入子函数继续执行
step out 单步执行时,执行完该函数中余下代码并返回上一层函数

要在控制台输出时:使用console.log(“输出内容”);如果输出内容含有变量值,要用占位符
%s(字符串) 或 %d(数字),如:

          function helloworld(){
            var  msg = "Hello,World";
            console.log("%s",msg);
          }

对象:
最上层:window 然后:document、history、navigator、location、screen、frames
location中有一个 计时器对象 (timer):
一次性的计时器:setTimeout(”函数名”,时间长度);
周期性计时器:setInterval(”函数名”,时间长度)

navigator对象可以用来检查cookie是否启用,或者了解用户是用什么浏览器访问页面的

document对象:
<a>标签,拥有href属性时,是一个超链接;拥有name属性时,则是一个anchor(锚)
在html页面中,可以直接通过标签访问对象。如:

            var img = document.img[0];//表示获取该页面中的第一张图片对象

动态页面:
两个单词的区分:Property和Attributes都是属性的意思;
Property通常指对象、类的属性;
Attribute通常指页面元素的属性;

JavaScript中使用CSS属性名和样式表中的属性名通常是一样的,但需要注意:
    ① css中有连字符的属性,要去掉连字符并且第二个单词大写;
       如:border-radius则变为 borderRadius;
    ② float在IE中变成 styleFloat;其他浏览器中变为cssFloat;

JavaScript自定义对象:
1. JavaScript对象并不遵循传统面向对象语言的 类和继承规则,本质是面向 原型(Prototype);
2. JavaScript为所有对象提供一个prototype属性,该属性可以用来给对象添加属性和方法,从而扩展对象;P291
*. 面向对象的思想中的封装,作用:方便传递值;隐藏实现细节;
3. 用prototype属性扩展对象,然后封装起来。这就是JS组件(如:AJAX)的基本原理
4. 在JavaScript中,函数也是一个对象,因此:function tune(){} //这段代码可以看做是创建了一个壳对象
5. JavaScript的对对象的封装有一个重要的作用是:解决浏览器兼容问题;如Ajax,它们在页面载入(对象创建)
时,就检查浏览器兼容问题,而代组件调用者无需知道怎么检查的;
6. 页面元素可以 赋值 给新建对象的一个内部成员变量,以此来操纵修改该页面元素的属性或样式;P303
7. 通过var关键字声明的成员是私有成员,用this关键字声明的成员则为公共的;

JavaScript中对像的继承(构造函数链):
1. apply:语法是 在对象A的构造函数中写:对象B.apply(this,arguments);则对象B就成为了对象A的一个属性
2. call p307

JavaScript也可以使用try-catch(finally)来做异常处理;
JavaScript沙箱的概念:JavaScript不能访问或修改本地系统文件;

Ajax:
原理:在同一个Web页面文档中完成:向服务器发出请求,调用一个服务,然后返回数据;
实现客户端和服务器端的异步通信。它与传统的表单提交的区别是:无需重新载入页面;
XMLHttpRequest对象

Json:
轻量级的数据交换格式
只支持双引号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值