标签:function Origin 圣杯 Target JavaScript Father 笔记 Son prototype
<!-- <script> //extend inherit(Target,Origin) //inherit使用Father.prototype.lastName = 'He'; function Father() {} function Son() {} function inherit(Target, Origin) { Target.prototype = Origin.prototype; } inherit(Son, Father); var son = new Son(); //inherit不足,Son和Father的原型指向的同一个,当Son原型改动时Father也会变化 </script> -->
<script> //圣杯模式 Father.prototype.lastName = 'He'; function Father() {} function Son() {} //常用写法 // function inherit(Target, Origin) { // function F() {} // F.prototype = Origin.prototype; // Target.prototype = new F(); // Target.prototype.constuctor = Target; // Target.prototype.uber = Origin.prototype; // } //这种圣杯模式的本质在于,中间生成了一个对象,起到了隔离的作用,今后为Son.prototype添加属性时,全部都会加在这个对象里面,所以不会对父级产生影响。而向上查找是沿着__proto__查找,可以顺利查找到父级的属性,实现继承。
//利用闭包将F作为一个私有化变量写法 var inherit = (function () { var F = function () {}; return function (Target, Origin) { F.prototype = Origin.prototype; Target.prototype = new F(); Target.prototype.constuctor = Target; Target.prototype.uber = Origin.prototype; //真正继承自Origin }; })();
inherit(Son, Father); Son.prototype.name = 'jun'; var son = new Son(); var father = new Father(); </script>
标签:function,Origin,圣杯,Target,JavaScript,Father,笔记,Son,prototype 来源: https://www.cnblogs.com/ilovejun/p/14093026.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。