zoukankan      html  css  js  c++  java
  • js原型继承四步曲及原型继承图

    一:js原型继承四步曲

     1     //js模拟类的创建以及继承
     2     //动物(Animal),有头这个属性,eat方法
     3     //名字这个属性
     4     //猫有名字属性,继承Animal,抓老鼠方法
     5     
     6     //第一步:创建父类
     7     function Animal(name){
     8         this.name = name;
     9     }
    10     //给父类添加属性方法
    11     Animal.prototype.eat = function(){
    12         console.log(this.name + " eating...");
    13     
    14     }
    15     //第二步:创建子类    
    16     function Cat(name){
    17         Animal.call(this,name);
    18 
    19     }
    20     //第三步:确定继承的关系
    21     Cat.prototype = Object.create(Animal.prototype);
    22     
    23     //第四步:改造构造器
    24     //改变了某个构造器的原型之后,紧接着的代码一定是改构造器
    25     Cat.prototype.constructor = Cat;
    26     
    27     Cat.prototype.zhualaoshu = function(){
    28         console.log(this.name + " 抓 老鼠");
    29     }
    30     
    31     var mao = new Cat("猫");
    32     mao.eat();
    33     mao.zhualaoshu();

     

     

     

    二:原型继承图


     

    下图辅助理解

     练习提巩固理解

    函数Foo的__proto的值等于Foo.prototype,对吗? 不对
    Object的prototype可以修改吗?能与不能原因是什么 不可以
    顶级constructor是谁? Function()
    顶级原型对象是谁? Object.prototype
    对象的construtor成员是个属性还是个方法? 方法
    Function有没有__proto__,为什么?值等于Object.prototype吗? 有,是Function.prototype;
    所有的构造器的__proto__都等于其对应的prototype 不对
    创建类形式的继承的四部曲是什么? 创建父类——>创建子类——>确定继承关系——>改构造器
    Function的constructor与prototype值可以修改吗? 可以
    Object.prototype === Object.__proto__吗? 不对
    Function.prototype === Function.__proto__吗?
    function F(){}; var f1 = new F();f1.__proto__ === Object.prototype吗? 不对
  • 相关阅读:
    backup archivelog delete input 与delete all input 区别
    RMAN LIST
    RMAN '异机异目录恢复'
    linux系统日志解析
    rman备份丢失控制文件,利用dbms_backup_restore恢复
    同义词的妙用
    上季度的老毛病又来了
    ORA20446,再次遭遇oracle bug
    修改RAC VIP IP
    数据库慢,原来与数据库无关
  • 原文地址:https://www.cnblogs.com/sunduge/p/7906185.html
Copyright © 2011-2022 走看看