1 安全的类型检测
介绍了一种类型检测方法,用原生Object.toString方法,来检测一个对象是不是原生对象。
Object.prototype.toString.call(value)
如果是原生数组,结果为[object Array]。如果是原生函数,结果为[object Function]。
以此类推。
如果是开发人员自定义的构造函数,则会返回[object Object]。
所以这个方法适合用来判断对象是否原生对象。
2 作用域安全的构造函数
构造函数 = 普通函数 + 会给this初始化属性
所以如果调用构造函数时不用new操作符,构造函数中的this就会指向全局对象。这就会污染全局对象。
所以在构造函数里加一重判断if (this instanceof xxx),它就变成了作用域安全的构造函数。
3 惰性载入函数
惰性载入函数就是函数第一次执行的时候,根据环境,决定自己的具体内容。
此后再次调用这个函数,就是上一次if else判断出来的结果了。
这样if else逻辑就只出现在第一次调用的时候,不用多次重复判断。
4 函数绑定
写一个bind函数,用来绑定一个方法被调用的时候,它的上下文,就是保证这个方法的this能指向对的this。
ECMAScript5有一个原生的bind方法,不用咱们写了。
5 函数柯里化
函数柯里化,就是把接受多个参数的函数,其中若干个参数变成指定值,只有剩下的参数才被动态传递,函数就被“包装成”了接收较少参数的函数。