貌似老师的中文翻译源码有个地方错了,在 112 行左右的 type 函数应该是这样的 :
function type(obj) {
return obj == null ? String(obj) :
class2type[toString.call(obj)] || "object"
}
少了 class2type
function type(obj) {
return obj == null ? String(obj) :
class2type[toString.call(obj)] || "object"
}
少了 class2type
2017-09-02
老师讲的真的是不错的,比较浅显易懂,那些不懂的是自己的基础功不扎实。__proto__ 指向创建这个对象的函数的显式原型。“不觉得源码是重写proto我觉得是重写prototype”,能问这个问题的肯定是没有区分 __proto__ 和 prototype 的作用,老师讲的没有错
2017-08-26
已采纳回答 / 星跞
因为window下直接挂载的undefined可能会被用户或其他库的代码覆盖:<...code...>所以zepto作者在局部变量里定义了一个未初始化的undefined,因为未初始化,所以undefined变量值肯定为undefined,综上就是为了避免全局undefined变量被覆盖导致判断不准的问题。
2017-07-31
对象是引用类型,arr.__proto__ 指向Array.prototype ,__proto__和prototype两对象指向的是内存的同一存储空间。arr.__proto__.fn增加一个方法,Array.prototype和其他通过Array创建的对象都指向该空间,因此都有这个fn方法。但若arr.__proto__ = {fn: ..}用对象字面量赋值,会丢失对之前原型的引用,相当于arr.__proto__已重新指向内存分配的另一个空间,和Array.prototype指向的已经不是同一个空间了,因此Array.prototype以及通过Array创建的其他对象就访问不到fn方法
2017-07-28