JS对象
JS几乎所有东西都是对象或用起来像对象
摘要
自定义构造函数,保持名称第一个字母大写
字面量表达式创建对象
{},[]创建的是对象
1,’string’,true,创建的是原始值
new关键字调用构造函数的语法来创建对象
new Number()
new String()
new Boolean() 创建的是对象
Number()
String()
Boolean() 没有new关键字的,则创建的是原始值
null undefined是原始值
原始值 按值复制;对象 按引用存储,===比较是否指向同一个对象
构造函数实例都拥有指向其构造函数的constructor属性,instanceof只适用于构造函数创建返回的复杂对象和实例
相较于点,中括号可用来访问特殊名的属性
in可坚持一个对象的属性,包括原型链;hasOwnProperty()可检查来自非原型链属性的对象
Chapter4 函数
函数返回值默认undefined,构造函数返回值为对象实例
函数是对象,因为可有属性,是个值(最终返回值)
this arguments适用于所有函数,argums.callee
函数定义有三种
函数构造函数new Function()
函数语句function a(){}
函数表达式var a = function(){}
调用函数,call(),apply()区别是参数传递的不同,前者传递多个分开的参数,后者传递多个参数组成的数组
自调用的函数表达式,若要立即调用函数,需在函数外面的圆括号,或任何将函数转换为表达式的符号。
(function (){}()) ,(function (){})(),!function (){}(),var a = function (){}()
function (){}()不会立即执行
函数表达式没有被提升,只有函数语句被提升,即函数定义前可被调用
Chapter5 head/全局对象
head对象,包含所有对象的对象浏览器是window,this
全局对象,全局属性是直接包含在head对象内不的值
显示引用head,性能代价高,若只依靠作用域链,避免显示引用head会更快
Chapter6 this
this在函数内部使用,引用包含函数的对象
自定义构造函数:new,this指对象实例;若没有new,this是上下文
call apply,控制this值
this的宿主函数北封装在另一个函数内或另一个函数的上下文中被调用,this永远是对head对象的引用;可在父函数that保留this引用
构造函数的prototype属性的函数中使用this,this引用调用方法的实例
Chapter7 作用域&闭包
作用域是执行代码的上下文,js作用域包括全局作用域,函数作用域,eval作用域
作用域链(词法作用域):包含函数的函数,会创建堆栈执行作用域,这些链接在一起的栈称为作用域链;
var vs 全局作用域
函数定义时确定作用域,而非调用时确定,所以又叫词法作用域
闭包:让函数向全局作用域返回一个嵌套函数,但该函数仍能通过作用域链访问其父函数的作用域;闭包是由作用域链引起的
作用域链式基于代码的编写方式创建的,而不是基于调用函数所在的上下文,这使得函数即使从一个不同的上下文调用函数,也能够访问最初编写代码时所在的作用域,这称为闭包。
Chapter8 函数原型属性
原型链 最后是Object.prototype
默认的prototype属性是Object()对象
myArray.proto或myArray.constructor.prototype引用Array.prototype
用新对象替换prototype属性回删除默认构造函数属性,constructor
Array.prototype={},myArray.constructor===Object();所以要Array.prototype={constructor:Array};
用新对象替换prototype属性不会更新以前的实例:Array.prototype={a:1}不会更新;Array.prototype.a=2会更新
原型继承链,实例化想要继承的对象,将该对象实例作为要继承该对象实例的函数的prototype属性值,eg:
var Person = function () { } var Chef = function () { } Chef.prototype = new Person(); var cody = new Chef()
Chapter12 Boolean()
Boolean(0 -0 null false NAN undefined “”) 都是false
非原始false布尔对象转换为true,eg:
Boolean('false')//true var falseValue=new Boolean(false); if(falseValue){console.log('falseValue is truthy');}
Others
直接在原始数字上访问属性时,该值被当作对象之前必须进行评估,1..toString(),第一个点被认为是数字十进制的小数点;临时包装器对象
null可表明属性拥有一个空值,等待赋值;typeof null返回object,===null 来判断,==无法区分null和undefined
undefined告诉你有东西丢失了;永远不要将一个值设置为undefined,若制定一个属性或变量值不可用,应为null
声明的变量未指定值
试图访问的对象属性未定义,并且不存在于原型链
undefined in this全局作用域定义undefined
JS启示录——深入了解JS对象
《JavaScript启示录》热门书评
-
书很薄,内容点多,代码详尽
0有用 0无用 颜海镜 2014-06-19
1.书中都是精华,很喜欢这种很薄的书2.列举大量知识点,都是些应该知道的知识点3.但都比较简单,看过犀牛书应该就不用买这本了4.看代码就可以了,几乎不需要看内容5.看了3天终于看完了,推荐大家阅读...
-
没有什么惊艳之处
0有用 0无用 欧雷 2014-08-17
这本书主要讲了对象的特点、对象与原始值之间的关系、作用域、原型、this 关键字……总之就是围绕着「对象」这一概念展开的。对我来说这本书的内容基本没有什么干货,说的那些 90% 以上都已经知道并掌握。不过,正像封底所说的——「本书将会帮助你巩固对 JavaScript 的理解」。在看书的同时,对已掌...
-
相当给力,把各种小知识点很好梳理了一边。
0有用 0无用 差不多先生 2014-12-27
相当给力,把各种小知识点很好梳理了一边。相当给力,把各种小知识点很好梳理了一边。相当给力,把各种小知识点很好梳理了一边。相当给力,把各种小知识点很好梳理了一边。相当给力,把各种小知识点很好梳理了一边。...
-
JS启示录——深入了解JS对象
0有用 0无用 Jane001 2015-03-14
JS对象 JS几乎所有东西都是对象或用起来像对象摘要 自定义构造函数,保持名称第一个字母大写 字面量表达式创建对象 ...
-
书不错,翻译不行
0有用 0无用 打怪升级 2016-01-12
书不错,不是入门的书,需要至少知道一些JS的东西,薄薄的一本把很多东西讲的非常明白,比如this关键字、闭包、作用域但是翻译的不好,有能力的还是推荐去看原版吧。紫薯布丁紫薯布丁紫薯布丁紫薯布丁...
书名: JavaScript启示录
作者: Cody Lindley
出版社: 人民邮电出版社
原作名: JavaScript Enlightenment
译者: 徐涛
出版年: 2014-3-1
页数: 126
定价: 35.00元
装帧: 平装
ISBN: 9787115334947