第四章 表达式和运算符
1 new调用构造函数的过程
    a 创建一个新的空对象
    b 设置空对象的_proto_指向构造函数原型prototype
    c 将这个新对象当做this的值来调用构造函数
    d 如果构造函数不返回一个对象值,则返回新对象
2 左值:表示存储在计算机内存的对象。
3 除数为0的运算结果是正无穷大或负无穷大,0/0的结果是NaN。
4 位运算符会将NaN、Infinity和-Infinity都转换为0。
5 in运算符希望它的左操作数是一个字符串或可以转换为字符串,右操作数是一个对象。
6 a op = b => a = a op b,只有在a包含具有副作用的表达式(比如函数调用和赋值操作)的时候,两者才不相等。
    a data[i++]*= 2 和 data[i++]=data[i++]*2是不等价的
7 关于eval()最重要的是,它使用了它的变量作用域环境。也就是说,它查找变量的值和定义新变量和函数的操作和局部作用域中的代码完全一样。
8 eval具有更改局部变量的能力,这对于JS优化器来说是一个大问题。在非严格模式下,允许var geval = eval,这样间接调用eval( geval(params)),则使用全局对象作为上下文作用域,并且无法读写、定义局部变量和函数。
9 typeof区分对象和原始值
10 delete的操作数是一个左值,否则将不进行任何操作同时返回true
 
第五章 语句
1 ;(空语句),JS解释器执行空语句时不会执行任何动作。
2 var 和 function都是声明语句,它们声明或定义变量或函数。
3 函数声明和函数定义的区别
    a 函数声明:函数的名字可以在函数内部和父作用域中取到(实质上是声明了一个变量,并将函数对象赋值给这个变量);
    b 函数定义:函数的名字只能在函数内部取到。
4 return和break语句都用于终止switch语句。
5 switch对每个case匹配操作执行恒等。
6 break 和 continue 是JS中唯一使用语句标签的语句。
7 try/catch/finally 语句是JS的异常处理机制。
8 with 语句用于临时扩展作用域链,with () {}。
 
第六章 对象
1 属性名可以是包含空字符串在内的任意字符串,但对象中不能存在两个同名的属性。
2 属性特性
    a 值(value)
    b 可写性(writable),表明是否可以设置该属性的值
    c 可枚举性(enumerable),表明是否可以通过for/in循环返回属性
    d 可配置性(configurable),表明是否可以删除或修改该属性
3 存储器属性特性
    读取(get) 写入(set)可枚举性和可配置性
4 对象特性
    a 对象的原型(prototype)
    b 对象的类(class)是一个标识对象类型的字符串
    c 对象的扩展标记(extensible)指明了是否可以向该对象添加新属性
5 可以通过对象直接量、关键字 new 和 Object.create() 函数来创建对象。
6 Object.create可以通过传入参数为null来创建一个没有原型的新对象,通过这种方式创建的对象不会继承任何东西,甚至不包括基础方法。
7 属性赋值操作首先检查原型链,以此判断是否允许赋值操作。如果对象o继承一个只读属性x,那么赋值操作是不允许的。如果允许属性赋值操作,它也总是在原始对象上创建属性或者对已有的属性赋值。只有在查询属性时与继承有关,设置属性则与继承无关。有一个例外,如果o继承自属性x,而这个属性是一个具有setter方法的accessor属性,那么这时将调用setter方法,而不是给o创建一个属性x。需要注意的是,setter方法是由对象o调用的,而不是原型对象调用。
8 检测属性:可以通过in 运算符、hasOwnProperty() 和 propertyIsEnumerable() 方法完成
9 propertyIsEnumerable是hasOwnProperty的增强版,只有检测到自有属性且这个属性的可枚举性为true时它才返回true。
10 枚举属性:
    a 可以通过for/in 循环(可枚举的自有属性和继承属性)
    b Object.keys() (可枚举的自有属性)
    c Object.getOwnPropertyNames() (所有自有属性)
11 由getter 和 setter 定义的属性称为"存取器属性",也是可以继承的。
12 通过调用Object.getOwnPropertyDescriptor()可以获得某个对象特定属性的属性描述符。
13 通过调用Object.defineProperty()可以设置属性的特性。
14 可写性控制着对值特性的修改。
15 可配置性控制着对其他特性的修改(包括属性是否可以删除)。具体规则:
    a 如果属性(数据属性&存储器属性)是不可配置的,则不能修改可配置性和可枚举性;
    b 如果存储器属性是不可配置的,则不能修改其getter 和 setter 方法,也不能将它转换为数据属性;
    c 如果数据属性是不可配置的,则不能将它转换为存储器属性;
    d 如果数据属性是不可配置的,则不能将它的可写性从false修改为true,但是可以从true修改为false;
    e 如果数据属性是不可配置且不可写的,则不能修改它的值。然而可配置但不可写的属性的值是可以手动修改的(实际上是先将它标记为可写的,修改值后,再转换为不可写的)
    f 如果对象是不可扩展的,不能给它添加新属性。
16 通过调用isPrototypeOf() 检测一个对象是否是另一个对象的原型。
17 通过内置构造函数(Array Date等)创建的对象均有类属性。
18 Object.prototype.toString.call(o).slice(8, -1) => 类属性
19 对象可扩展性
    a Object.isExtensible() 是否可扩展
    b Object.preventExtensions() 转换为不可扩展的
    c Object.seal() 除了转换为不可扩展的,还将对象的所有自有属性设置为不可配置的
    d Objetct.freeze() 除了转换为不可扩展的,还将对象的属性设置为不可配置的,另外所有数据属性都设置为只读的(setter方法不收影响)
20 JSON.stringify() 和 JSON.parse() 序列化和还原对象。
 

JS权威指南读书笔记(二)的更多相关文章

  1. JS权威指南读书笔记(七)

    第十七章 事件处理 1 客户端JS程序采用了异步事件驱动编程模型. 2 关于事件的重要定义     a 事件类型(event type)     b 事件目标(event target) target ...

  2. JS权威指南读书笔记(六)

    第十五章 脚本化文档   1 文档对象模型(DOM)是表示和操作HTML和XML文档内容的基础API. 2 文档节点的部分层次结构 Text和CDATASection都是characterData的子 ...

  3. JS权威指南读书笔记(五)

    第十三章 Web浏览器中的JavaScript 1 在Html文档中嵌入客户端4种JS代码方法     a 内联方式,放置在<script>标签之间     b 放置在<script ...

  4. JS权威指南读书笔记(四)

    第十章 正则表达式 1 正则表达式直接量定义为包含在一对斜杠(/)之间的字符     a /s$/ == new RegExp("s$") 2 直接量字符:所有字母和数字都是按照字 ...

  5. JS权威指南读书笔记(三)

    第七章 数组 1 数组的实现是经过优化的,用数字索引来访问数组元素一般来说比访问常规的对象属性要快的多. 2 数组直接量的语法允许有可选的结尾的逗号,故[ ; ; ]只有两个元素而非三个. 3 调用构 ...

  6. JS权威指南读书笔记(一)

    第一章 JavaScript概述 1 JS是一门高端的.动态的.弱类型的编程语言,非常适合面向对象和函数式的编程风格.   第二章 词法结构 1 JS程序是用Unicode字符集编写的. 2 JS是区 ...

  7. HTTP权威指南读书笔记

    HTTP权威指南笔记 读书有两种境界,第一种境界是将书读薄,另一种是读厚.本篇文章就是HTTP权威指南的读书笔记,算是读书的第一重境界,将厚书读薄.文章对HTTP的一些关键概念做了比较详细的概述,通读 ...

  8. Hadoop权威指南学习笔记二

    MapReduce简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.n ...

  9. css权威指南读书笔记

    今天翻手机,翻到了许久之前看css权威指南时的笔记,遂移到博客中来. 1.属性选择器p.one class名为one的p元素p[class][name] 含有class和name属性的p元素p[cla ...

随机推荐

  1. Facebook 对 PHP 的改进

    PHP 是传统意义上的解释型语言,而不是编译型语言. 因此,在命令行或 Web 服务器调用解释器解释 PHP 代码之前,PHP 代码就是 PHP 代码.PHP 解释器会解释 PHP 脚本,把代码转换为 ...

  2. [原][osg][OSGEARTH]OE的关闭打开自动计算裁剪面被OE的海洋ocean影响

    在osgEarthUtil 下 Ocean.cpp 的  traverse函数中: // we don't want the ocean participating in the N/F calcul ...

  3. python获取风和天气城市数据 ID

    import requestsurl='https://cdn.heweather.com/china-city-list.csv'strhtml=requests.get(url)strhtml.e ...

  4. Closing the Sim-to-Real Loop: Adapting Simulation Randomization with Real World Experience

    Closing the Sim-to-Real Loop: Adapting Simulation Randomization with Real World Experience 模拟到实际循环闭环 ...

  5. 构造方法(和python初始化变量类似)

    public class Demo1 { int  name2=1; public Demo1(int name) { name=name2; } public Demo1() { } public ...

  6. CentOS7 配置sendmial + PHP mail函数发送邮件

    https://blog.csdn.net/jiabangok/article/details/51840556

  7. [LeetCode] 849. Maximize Distance to Closest Person 最大化最近人的距离

    In a row of seats, 1 represents a person sitting in that seat, and 0 represents that the seat is emp ...

  8. Warning: Hash history cannot PUSH the same path; a new entry will not be added to the history stack

    现象 在用`mobx-react-router`的`this.props.history.push("/")`的时候,浏览器会提示 Warning: Hash history ca ...

  9. Java程序内存分析

    1. Runtime.getRuntime().freeMemory() 和 jvisualvm.exe http://blog.csdn.net/u011004037/article/details ...

  10. rdkafka swoole

    1.yum install php-devel php-pear 2. wget http://pear.php.net/go-pear.phar 3.PHP go-pear.phar 4.cp /r ...