JavaScript高级程序设计读书总结(一)

  1. ECMAScript就是对实现该标准规定的各个方面内容的语言的描述,它规定了这门语言的下列组成部分:语法、类型、语句、关键字、保留字、操作符、对象。
  2. DOM的作用是把页面映射为一个多层节点结构,开发人员通过DOM提供的API对HTML页面的节点进行增删改等操作。
  3. BOM从根本上讲只处理浏览器窗口和框架。
  4. 虽然 JavaScript 和 ECMAScript 通常都被人们用来表达相同的含义,但 JavaScript 的含义却比 ECMA-262 中规定的要多得多。一个完整的 JavaScript 实现应该由下列三个不同的部分组成:
    核心(ECMAScript)
    文档对象模型(DOM)  
    浏览器对象模型(BOM)
  5. DOM并不只是针对JavaScript的,很多别的语言也都实现了DOM。
  6. <script>属性:
    async: 异步加载
    defer: 立即下载、延迟执行
  7. 相对于嵌入JavaScript代码,使用外部JavaScript文件的优点有可维护性好、优化页面加载速度(由于浏览器的缓存机制,如果俩个页面都使用同一个文件,那么只需下载一次)
  8. <noscript>用于在不支持JavaScript的浏览器中显示替代的内容。
  9. 文档模式:混杂模式、标准模式和准标准模式。
    ECMAScript中的一切(变量、函数名和操作符)都区分大小写。
  10. ES5中引入了严格模式的概念,在顶部添加代码:"use strict" 即可启用。
alert(null == undefined); // true
  1. Number()可以把任何数据类型转换为数值,parseInt()和parseFloat()可以把字符串转换为数值。
  2. 全等”===”只在两个操作数未经转换就相等的情况下返回true。
    14.ECMAScript 中的对象其实就是一组数据和功能的集合。
    15.break 和 continue 语句用于在循环中精确地控制代码的执行。其中,break 语句会立即退出循环,强制继续执行循环后面的语句。而 continue 语句虽然也是立即退出循环,但退出循环后会从循环的顶部继续执行。
var num = 0;
for (var i=1; i < 10; i++) {    
    if (i % 5 == 0) {
    break;
    }
    num++;
}
alert(num); //4

16.break 和 continue 语句都可以与 label 语句联合使用,从而返回代码中特定的位置。这种联合使用的情况多发生在循环嵌套的情况下,如:

var num = 0;
outermost:
    for (var i = 0; i < 10; i++) {
        for (var j = 0; j < 10; j++) {
            if (i == 5 && j == 5) {
                break outermost;
            }
            num++;
        }
    }
alert(num); //55
  1. 使用var操作符定义的变量为该变量作用域中的局部变量,省略var将会创建一个全局变量(不推荐,严格模式下报错)。
  2. 数据类型:ECMAScript中有5种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和String。还有1种复杂数据类型——Object,Object本质上是由一组无序的名值对组成的。
  3. ECMAScript能够表示的最小数值保存在Number.MIN_VALUE中——在大多数浏览器中,这个值是5e-324;能够表示的最大数值保存在Number.MAX_VALUE中——在大多数浏览器中,这个值是1.7976931348623157e+308。
  4. arguments 对象只是与数组类似(它并不是 Array 的实例),因为可以使用方括号语法访问它的每一个元素(即第一个元素是 arguments[0],第二个元素是 argumetns[1],以此类推),使用 length 属性来确定传递进来多少个参数。
  5. NaN是一个特殊的数值,isNaN()函数用于判断一个值是否为数字,例如字符串"10"或Boolean值。而任何不能被转换为数值的值都会导致这个函数返回true。
  6. Object的每个实例都具有下列属性和方法:
    constructor:保存着用于创建当前对象的函数。对于前面的例子而言,构造函数(constructor)就是Object()。
    hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。
    isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型。
    propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句来枚举。
    toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
    toString():返回对象的字符串表示。
    valueOf():返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值相同。
    由于在ECMAScript中Object是所有对象的基础,因此所有对象都具有这些基本的属性和方法。
 var obj1 = new Object();
 var obj2 = obj1;

像这样复制引用类型的值时,其实只是相当于复制了一个指针,俩个变量指向的是同一个对象,所以当为obj1添加新的属性时,obj2也可以访问这个新属性。不仅在变量中如此,在函数的传参时,也遵循相同的原理。

  1. typeof()一般用来检测基本数据类型,instanceof()用来检测Object属于什么类型的对象。
  2. 在执行try-catch语句的catch块或执行with语句时,会在作用域链的前端临时增加一个变量对象。
  3. JavaScript具有自动垃圾收集机制,最常用的是标记清楚。不过IE9之前COM对象的垃圾收集机制采用的是引用计数策略,因此当在IE9之前涉及COM对象,就会有循环引用的问题。
  4. 合理利用垃圾收集机制还可以做到优化浏览器性能,比如在程序中,一旦有数据不再有用,可以将其设置为null来释放它的引用,这种解除引用的方法适用于大多数全局变量和全局对象的属性,解除引用后,数据脱离了执行环境,下次垃圾收集器运行时便会将其回收,从而达到释放内存的优化目的。
  5. 在WEB浏览器中,全局执行环境被认为时window对象,因此所有全局变量和函数都是作为window对象的属性和方法创建的。
  6. 作用域链的用途是保证对执行环境有权访问的所有变量和函数的有序访问。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342