@ALL 大家注意,老师在2:20的时候执行了一下代码:
arr.__proto__={
addClass:function(){console.log("this is a addClass")},
concat:Array.prototype.concat,
push:Array.prototype.push,
}
此时的arr已经失去的之前原型中的全部引用,所以老师才会在后面操作下面的步骤:
arr.__proto__.constructor.prototype.customFn={a:10},
只有这样原型中才会有customFn方法。
arr.__proto__={
addClass:function(){console.log("this is a addClass")},
concat:Array.prototype.concat,
push:Array.prototype.push,
}
此时的arr已经失去的之前原型中的全部引用,所以老师才会在后面操作下面的步骤:
arr.__proto__.constructor.prototype.customFn={a:10},
只有这样原型中才会有customFn方法。
2017-10-23
(window.$ === undefined) && (window.$ =Zepto) 这个和与运算的实现有关, 如果&&前面这个表达式返回false, 则与运算返回false, 就不执行第二个表达式。 所以window.$ === undefined返回true时才执行第二个表达式
貌似老师的中文翻译源码有个地方错了,在 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