-
var arr=[1,2,3]; arr.__proto__:prototype 打印原生的属性和方法 arr.push(4);//使用push()方法给数组添加一个元素 arr=>[1,2,3,4]; arr.__proto__={ addClass:function(){alert(123);} }//修改数组的__proto__,只剩下addClaass()方法,调用不到push()方法了,如下 arr.push(4); >undefined //并存式写法,再原有基础上添加addClass()方法,依然可以使用push arr.__proto__.addClass()=function(){alert(456);} arr.push(4); >[1,2,3,4] arr.addClass(); >弹出456查看全部
-
我们需要招聘有产品观念的程序员:
1- 要有文档意识:当你写的一些产品/组件/第三方库的时候,一定要不厌其烦地提供准确详细的说明,并维护它。它的质量和寿命,决定着你的产品的寿命;
2- 要有反馈与迭代的意识,根据反馈/调查结果来调整产品;
查看全部 -
1. 每一个函数都有一个 prototype 属性。 2. 所有实例化对象都有一个 __proto__ 属性,指向构造函数的 prototype 属性。 3. 原型链(查找)4. __proto__ 是可以修改的。查看全部
-
javascript的三座大山查看全部
-
所有new出来的对象,都有一个__proto__指向这个函数的prototype查看全部
-
1- 减少变量定义 -- 因为有的变量定义时会执行new函数
2- 在做react时 可以根据需求实现部分的jquery的功能 而不必全部引入 --- 这个也就提供了一些学习源码实现的思路:你在开发中有些功能跟jquery/zepto提供的功能很像,那么你就可以去zeptoy源码中搜对应的函数,看这个函数的实现思路 -- 这个可都是非常优秀的开发人员的手笔啊~
查看全部 -
1- 原型 函数 都是对象的一种
2- 函数是一种可执行对象
3- 原型是内置的一个属性 一般构建方法是内建一个对象fn 然后把所有的属性加到fn中 再把这个fn赋值到prototype上
查看全部 -
1- 用函数内建的zepto对象管理所有的内部函数
2- zepto.init的作用就是把传入的多种情况的selectort统一成zepto自定义的内部处理对象;
查看全部 -
zepto-core基本的设计结构
查看全部 -
特别是当你写但三方库的时候,一定不要写公共变量,因为这样有可能你的公共变量会污染到使用者的变量。所有的变量都用函数圈起来,划定它的作用域
查看全部 -
这里就是第一步初步的设计
1- 通过工厂模式--该自执行匿名函数返回一个加工后的对象给zepto变量
2- 然后再把这个zepto变量挂载到全局变量window上,用Zepto为属性名;如果¥未被占用,也挂在$上
查看全部 -
插件机制:
就是往原型里加属性:
arr.__proto__.customFn // 只是应用于arr一个变量 -- 验证下~
arr.__proto__.constructor.prototype.customFn // 是应用于原型的
查看全部 -
设计思路:
1- 给自己定义的对象添加自定义的方法:
-- 修改对象的__proto__指向,指向自己的所定义的对象(原型,里面有自定义的方法)
-- 同时该对象的部分功能可以继承原来原型的方法,例如{ push:Array.prototype.push ...}
查看全部 -
总结:是个好习惯:
1- 每一个函数,都有一个prototype属性(因为原型的本质是函数??Array 都是函数)
2- 所有通过函数new出来的东西(具体的对象, var arr = new Array(); 这个arr就是),每一个都有一个__proto__指向该函数的prototype
-- prototype(显式原型)
--__proto__(隐式原型)
3- 对象的方法/属性 -- 会从自身出发,沿着原型链(__proto__)去寻找,__proto__类似于链表的指针
4- __proto__是可修改的
查看全部 -
对象的__proto__可以被重新赋值
之后可能就会与之前的原型链断开 所继承的方法也就不复存在了
查看全部
举报