为什么80%的码农都做不了架构师?>>>   

1.extend-prototype<script type="text/javascript">/**js实现继承的第一种方式是基于原型链的方式 */function Parent(){this.pv="parent";}Parent.prototype.pp="ok";Parent.prototype.showParentVlaue=function(){alert(this.pv);}function Child(){this.cv="child";}/**如果想进行赋值之后,才进行原型链的设定,这样赋值的原型对象*就会被重写,赋值的对象就不会存在新的原型对象中*//* Child.prototype={showChildValue=function(){alert(this.v);}        } *//*让child的原型链指向Parent对象,也就等于完成了一次继承 *注意内存模型  */Child.prototype=new Parent();Child.prototype.showChildVlaue=function(){alert(this.cv);}/*在使用原型链进行继承应注意以下问题:1.在设置了原型链之后再为原型链赋值2.一定要在原型链赋值之后才能添加或覆盖方法 *//**当执行了下面这句话之后,意味着Child的原型又重写了*这样就不存在任何的继承关系了,使用原型链需要注意的第一个问题  *//* Child.prototype={showChildValue=function(){alert(this.v);}        } *//*此时完成了对父类对象的覆盖 */Child.prototype.showParentVlaue=function(){alert("override parent");}var c=new Child();c.showParentVlaue();c.showChildVlaue();alert(c.pp);</script>
02extend-prototype02<script type="text/javascript">/**js实现继承的第一种方式是基于原型链的方式 */function Parent(){this.pv="parent";this.color=["red","yellow"]; }Parent.prototype.pp="ok";Parent.prototype.showParentVlaue=function(){alert(this.pv);}function Child(){this.cv="child";}Child.prototype=new Parent();Child.prototype.showChildVlaue=function(){alert(this.cv);}/*此时完成了对父类对象的覆盖 */Child.prototype.showParentVlaue=function(){alert("override parent");}var c1=new Child();/*使用原型链继承最大的缺点是,无法从子类中调用父类的构造函数*这样就没有办法把子类中的属性赋值到父类 第二个缺点:如果父类中存在引用类型,此时这个引用类会添加到子类的原型中,当第一个对象修改了这个引用之后,其他对象的引用同时修改 */c1.color.push("blue");//Child中原型中的color被修改 alert(c1.color);//red,yellow,bluevar c2=new Child();alert(c2.color);//red,yellow,blue</script>
03extend-call01<script type="text/javascript">/**js实现继承的第一种方式是基于原型链的方式 */function Parent(){this.color=["red","blue"]; this.name="Leon";}function Child(){/*Child中的this明显应该指向Child的对象 当调用Parent方法的时候,而且this又是指向了Child此时就等于在这里完成this.color=["red","blue"]也就等于在Child中有了this.color属性,这样也就变相的完成了继承 */Parent.call(this);//这种调用方式,仅仅完成了函数的调用,根本无法实现继承 //new Parent();}var c1=new Child();c1.color.push("green");//alert(c1.color);var c2=new Child();//alert(c2.color);alert(c2.name);</script>
04extend-call02<script type="text/javascript">/**js实现继承的第一种方式是基于原型链的方式 */function Parent(name){this.color=["red","blue"]; this.name=name;}function Child(name,age){this.age=age;/*使用伪造的方式可以把子类的构造函数参数传递到父类中*/Parent.call(this,name);}var c1=new Child("Leon",12);alert(c1.name+","+c1.age);var c2=new Child("Ada",22);alert(c2.name+","+c2.age);</script>
04extend-call03<script type="text/javascript">/**js实现继承的第一种方式是基于原型链的方式 */function Parent(name){this.color=["red","blue"]; this.name=name;this.say=function(){alert(this.name);}}/**由于使用伪造的方式,不会完成Child的原型指向Parent*所以Child中不存在say()方法,解决:将这个方法放置到Parent中使用this创建,但是此时每个对象中又存在一个say()方法,这样占用大量空间,不建议单独使用伪造方式继承  *//* Parent.prototype.say=function(){alert(this.name);} */function Child(name,age){this.age=age;/*使用伪造的方式可以把子类的构造函数参数传递到父类中*/Parent.call(this,name);}var c1=new Child("Leon",12);//alert(c1.name+","+c1.age);c1.say();var c2=new Child("Ada",22);//alert(c2.name+","+c2.age);c2.say();</script>
05extend like java<script type="text/javascript">/**组合的实现方式是属性通过伪造的方式实现,方法通过原型链的方式实现 */function Parent(name){this.color=["red","blue"]; this.name=name;}Parent.prototype.ps=function(){alert(this.name+"["+this.color+"]");}function Child(name,age){this.age=age;//已经完成伪造Parent.call(this,name);}Child.prototype=new Parent();Child.prototype.say=function(){alert(this.name+","+this.age+"["+this.color+"]");}var c1=new Child("Leon",22);c1.color.push("green");//c1.say();c1.ps();var c2=new Child("Ada",23);//c2.say();c2.ps();</script>

转载于:https://my.oschina.net/686991/blog/363154

javascript11-object03-extend相关推荐

  1. list extend 和 append

    append 一次追加一个列表 extend 一次追加所有的元素 单个的形式加入

  2. Python List extend()方法

    Python List extend()方法  Python 列表 描述 extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表). 语法 extend()方法语法 ...

  3. Python 精选笔试面试习题—类继承、方法对象、包管理、闭包、可变类型作为默认参数、列表引用、sort与sorted、 append 和 extend、深拷贝和浅拷贝

    1. 类继承 如下代码 class A(object):def show(self):print 'This is calss A'class B(A):def show(self):print 'T ...

  4. [UML]UML系列——用例图中的各种关系(include、extend)

    [UML]UML系列--用例图中的各种关系(include.extend) 原文:[UML]UML系列--用例图中的各种关系(include.extend) 用例图中的各种关系 一.参与者与用例间的关 ...

  5. Day03 - Ruby比一比:Module的include与extend

    前情提要 在第一天里,我们很激昂地用Ruby的类别.物件.方法,写了开赛宣言! 在第二天里,我们比较了方法与模块,比的过程中,发现模块多了包含(inclusion)与延伸(extension). 超级 ...

  6. 无法解析 list 中的方法 iterator_Python-list中的append()和extend()方法区别

    一.append()和extend()方法都是用来添加数据到list末尾的,两者的区别: append()添加的时候会把添加的数据当成一个整体进行添加,允许添加任意类型的数据 extend()添加的时 ...

  7. python list的extend (会将被插入的列表的每个元素从列表中拿出添加到列表中)与append方法(若被插入为列表,会将列表插入到源列表中)区别

    python list的extend (会将被插入的列表的每个元素从列表中拿出添加到列表中)与append方法(若被插入为列表,会将列表插入到源列表中)区别 Python--list的extend() ...

  8. jQuery扩展---$.extend和$.fn.extend

    2019独角兽企业重金招聘Python工程师标准>>> 一.jQuery.extend (function($){$.extend({static:function(){consol ...

  9. jQuery的extend详解

    JQuery的extend扩展方法:       Jquery的扩展方法extend是我们在写插件的过程中常用的方法,该方法有一些重载原型,在此,我们一起去了解了解.       一.Jquery的扩 ...

  10. jQuery.extend 函数详解

    JQuery的extend扩展方法: Jquery的扩展方法extend是我们在写插件的过程中常用的方法,该方法有一些重载原型,在此,我们一起去了解了解. 一.Jquery的扩展方法原型 extend ...

最新文章

  1. [转]linux(centos)搭建SVN服务器
  2. 怪怪设计论闲谈篇:职责与解耦的矛盾
  3. 【计蒜客 - 程序设计竞赛】商业信息共享(Tarjan缩点)
  4. php 自己电脑运行内存,php 统计网页打开耗时和脚本运行内存
  5. why2cs学习之路
  6. 【python】 类、对象的练习题
  7. 使用Apriori算法和FP-growth算法进行关联分析
  8. Lesson 3.1 - Python Core Data Types
  9. Java-多线程第三篇3种创建的线程方式、线程的生命周期、线程控制、线程同步、线程通信...
  10. 一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取
  11. php 线性回归算法,线性回归方程计算器
  12. head first JavaScript pdf 下载
  13. 来几个有趣的Linux指令 (转自Chinaitlab)
  14. Reflection in Java
  15. ipa包瘦身之图片无损压缩瘦身
  16. 耳机声控,以及耳机拔出或者插入控制播放暂停
  17. python中分支结构的条件表达_【单选题】下面不能作为Python分支结构的条件表达的是(a为一个数值变量) A. a10 B. a in {“ysu”} C. a5 and a10 D. 5...
  18. 今天比较了一下google和baidu的图片搜索
  19. python连接sql server2008教程_Python连接SQL Server数据库
  20. 高校物联网专业如何设置课程

热门文章

  1. 在ROMMON状态下恢复IOS的方法
  2. 软件开发人员能力模型
  3. Cisco IOS的故障恢复方法
  4. WEB应用数据验证指南
  5. 阿里年会的马老师说:认真生活、快乐工作、保持理想
  6. 过河问题 还是不会 去学请教一下 数学老师 -----
  7. 说说JSON和JSONP,也许你会豁然开朗
  8. linux shell 脚本攻略学习10--生成任意大小的文件和文本文件的交集与差集详解
  9. 【分享】工作流支持邮件提醒相关配置
  10. Base64实现图片的编码和解码