【JavaScript】The Good Parts

语法

  • /*形式的注释因为正则表达式中可能会出现这些字符,所以建议都使用//来进行注释
  • 数字在JS内部统一表示为64位的浮点数,所以1和1.0的值是相同的
  • NaN不等于任何值,包括它自己
  • 所有字符都是16位的,没有字符类型,可以通过包含一个字符的字符串表示
  • 常用转义字符:" ' \ / \b \f \n \r \t \uxxxx
  • 字符串是不可变的,两个包含着完全相同的字符且字符顺序也相同的字符串认为是相同的字符串(===相等)
  • 在函数内部用var声明的变量是该函数的私有变量
  • 只有函数作用域和全局作用域,所以花括号式的代码块不会创建新的作用域
  • 除了false、null、undefined、空字符串、0、NaN外,其他值都为真
  • switch语句执行表达式,对产生的数字或字符串进行case匹配,case表达式不一定必须是常量
  • for in语句枚举对象的所有属性名或键名
  • switch、while、for和do语句可以有个前置标签,然后可以用break <label>来退出该该标签的语句
  • typeof的结果:number、string、boolean、undefined、function和object(typeof null结果为object)
  • 只有两个运算数都为数字时,+才是加法运算

对象

  • 对象是可变的"key/value"对的集合,除了数字、字符串、布尔值、null和undefined外,其他诸如数组、函数、正则表达式等值都是对象;尽管数字、字符串和布尔值拥有方法,但它们是不可变的,所以并不是对象
  • 对象是属性的容器,每个属性都有名字和值,属性名可以是包括空字符串在内的任意字符串,属性值可以是除undefined外的任何值
  • 对象是无类型的,所以对新属性的名字和值没有限制
  • 属性名为一个合法的JS标识符且不是保留字时,在对象字面量中可以不用引号包括,在对象获取属性时可以用.来获取(不然就得使用["name"]这样的形式)
  • 对undefined获取属性会抛出TypeError异常,可以先用&&运算符来避免错误
  • 对象通过引用来传递,永远不会被复制
  • 每个对象都连接到一个原型对象,通过对象字面量创建的对象连接到Object.prototype
  • 对对象的改变,不会修改原型;只在获取属性时,但是对象没有时,才会从原型链上去查找这个属性(即为委托)
  • 原型新增的属性会立即对所有基于该原型创建的对象都可见
  • 用hasOwnProperty方法可以判断是否为对象独有的属性
  • for in语句可用来遍历对象的所有属性名,包括原型中的属性(前提是该属性是可遍历的)
  • delete可以删除对象的属性,但不会删除原型链中的属性,所以可能会让原型链中的属性透现出来

函数

  • 函数对象的原型对象是Function.prototype(它又连接到Object.prototype)
  • 函数对象在创建时会配一个prototype属性,其值为一个对象,该对象拥有一个constructor属性,值为该函数
  • 每个函数都接收两个附加的参数:this和arguments,其中this的值取决于调用模式(共有4中调用模式:方法调用模式、函数调用模式、构造器调用模式和apply调用模式),this的绑定是迟绑定,在函数调用那一刻才决定
  • 方法调用模式:函数作为对象的一个属性时,就称为方法,通过.或[]来调用时就是方法调用,此时this被绑定到该对象
  • 函数调用模式:非对象属性时,就当作函数,此时this被绑定到全局对象(方法内部声明的函数就无法通过this访问方法所属的对象,一般通过在方法多声明一个that变量并赋值为this,然后在内部函数使用that即可解决)
  • 构造器调用模式:带上new来调用函数(构造器函数,一般约定首字母大写),此时会创建一个新对象,其原型连接到函数的prototype属性对象,另外函数的this会绑定到新对象上
  • Apply调用模式:调用函数的apply方法,该方法第一个参数为要绑定给函数的this的值,第二个参数为一个参数数组
  • 函数的隐藏参数arguments只是一个拥有length属性的类似数组的对象,并没有任何数组的方法
  • 带new调用的函数,如果返回值不是对象,则返回this(即新生成的对象)
  • 通过throw来抛出一个包含name和message属性的exception对象,try用于捕捉
  • 可以给基本类型扩充功能,例如给Object.prototype增加方法让所有对象都可用,但是要在类库混用的时候要注意,避免错误覆盖
  • 因为JS只有函数作用域和全局作用域,而没有块级作用域,所以尽量在函数体的顶部声明函数中可能用到的所有变量
  • 闭包使得内部函数能访问外部的实际变量(类似引用而非复制,需要复制的效果可以使用函数参数传值的方式)
  • 避免在循环中创建函数
  • 模块模式:一个定义了私有变量和函数的函数;利用闭包,该函数内部创建一个可以访问私有变量的特权函数,最后返回这个特权函数

数组

  • JS的数组其实是类数组特性的对象
  • 每个数组都有一个length属性,其值是数组最大的整数属性名加1,给数组增加一个非整数属性时,不会改变它的length
  • 把length设小将会导致所有下标大于等于新length的属性被删除
  • 用delete删除数组元素会导致空洞,一般使用splice方法

正则表达式

  • 建议使用正则表达式字面量来创建正则表达式
  • 用正则表达式字面量创建的RegExp对象共享同一个单例
  • 需要转义的字符:\ / [ ] ( ) { } ? + * | . ^ $
  • .匹配除行结束符以外的任何字符
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容