• Home
  • Archive
  • GitHub
  • Gmail
  • 关于apply和call

    Jul 9, 2015

    最近喵了这么多书也算是熟悉了这两个纠结过很久的方法,把以前收藏的东西整理一下好了。原文地址 JS 中的 call、apply、bind 方法

    ...more
  • 编写高质量代码

    Jul 2, 2015

    在北京待了五天,没卫浴没网络没水没得正常吃饭,今天准备出去找房子打游击战。开始编写高质量代码。

    语言基础

    • 防止浮点数溢出,可转换为整数计算再转小数
    • 调用 Object 对象定义的默认 toString 方法判断对象类型,Object.prototype.toString.apply( value ) ,仅适用于基本数据类型和内置对象。检测非内置对象使用 instanceof 和 constructor
    • NaN,使用 isFinite 和 typeof 检验数字类型
    • 逗号运算符使用括号强迫进行连续运算,否则会出现先赋值再计算的问题
    • hasOwnProperty 可被修改(那解决方法咧)(通过 iframe 获得原始对象)
    • 伪数组不包含数组的方法
    • continue 影响性能(具体咧)(jsperf 测试发现几乎无差距)
    • 关于 new,避免使用和给出的原因感觉很不合理
    ...more
  • Javascript设计模式

    Jun 28, 2015

    在北京待了两天感受到了学校深深的恶意。开着空调看书才舒服了一点又被宿管断了电。从头看设计模式。

    Constructor(构造器)模式

    • 对象创建,通过对象字面量或者 Object.create
    • 基本构造器,所有属性和方法丢在构造器里。不适合继承,因为有些方法需要在不同实例间共享(应该是不需要在执行构造器的时候再创建一遍的意思吧)
    • 带原型的构造器
    ...more
  • Javascript语言精粹

    Jun 27, 2015

    在去北京的火车上一口气看完了。书不厚但是内容很厚实。对于上下文,构造方法等理解有很大的帮助。书的后面用了很大的空间写了javascript的糟粕,很奇怪但有效的学习方法~

    • 伪类及函数化模式。前者通过 new 构造对象,后者通过函数构造对象。前者不利于私有属性的处理,后者通过闭包解决这个问题,同时有利于重写超类方法。
    • javascript 中,数组的实质是对象。数组原型为 Array。通过如下方法判断数组

      // 在不同 window 或 frame 失效
      typeof "value" === "object" && value.constructor === Array
      Object.prototype.toString.apply(value) === '[Object Array]'
    ...more
PREV

© 2016 - 2017 liyh, powered by Hexo and hexo-theme-apollo.