• js面向对象之继承-原型继承


    //animal 父类 超类
            var Animal = function(name)
            {
                this.name = name;
                this.sayhello = function()
                {
                    alert("HI,我是" + this.name + ",你愿意和我做朋友吗?");
                };
            };
            Animal.prototype.shout = function()
            {
                alert(this.name + ",正在叫!");
            };
            Animal.prototype.game = function()
            {
                alert(this.name + ",正在玩耍!");
            };
            
            var Dog = function(name)
            {
                //this.name = name;
                this.name = name;
                this.shout = function()//重写父类的函数
                {
                    alert(this.name + ",正在汪汪叫!");
                };
            };
            
            var Cat = function(name)
            {
                this.name = name;
                this.shout = function()
                {
                    alert(this.name + ",正在喵喵叫!");
                };
            };
            
            //原型继承
            Dog.prototype = Cat.prototype = new Animal();
            
            var xh = new Dog("小黑");
            xh.sayhello();
            xh.shout();
            xh.game();
            
            var xm = new Cat("小咪");
            xm.sayhello();
            xm.shout();
            xm.game();

     封装一个函数后:

    var inherit = function (subclass, superclass) {
        subclass.prototype = new superclass();
    };
     
    //animal 父类 超类
    var Animal = function (name) {
        this.name = name;
        this.sayhello = function () {
            alert("HI,我是" + this.name + ",你愿意和我做朋友吗?");
        };
    };
    Animal.prototype.shout = function () {
        alert(this.name + ",正在叫!");
    };
    Animal.prototype.game = function () {
        alert(this.name + ",正在玩耍!");
    };
     
    var Dog = function (name) {
        //this.name = name;
        this.name = name;
        this.shout = function () //重写父类的函数
        {
            alert(this.name + ",正在汪汪叫!");
        };
    };
     
    var Cat = function (name) {
        this.name = name;
        this.shout = function () {
            alert(this.name + ",正在喵喵叫!");
        };
    };
     
    //原型继承
    //Dog.prototype = Cat.prototype = new Animal();
    inherit(Dog, Animal);
    inherit(Cat, Animal);
     
    var xh = new Dog("小黑");
    xh.sayhello();
    xh.shout();
    xh.game();
     
    var xm = new Cat("小咪");
    xm.sayhello();
    xm.shout();
    xm.game();

    给函数添加extends方法

    Function.prototype.extends = function (superclass) {
        this.prototype = new superclass();
    };
     
    //animal 父类 超类
    var Animal = function (name) {
        this.name = name;
        this.sayhello = function () {
            alert("HI,我是" + this.name + ",你愿意和我做朋友吗?");
        };
    };
    Animal.prototype.shout = function () {
        alert(this.name + ",正在叫!");
    };
    Animal.prototype.game = function () {
        alert(this.name + ",正在玩耍!");
    };
     
    var Dog = function (name) {
        this.name = name;
        this.shout = function () //重写父类的函数
        {
            alert(this.name + ",正在汪汪叫,叫的很开心!");
        };
    };
    Dog.extends(Animal);
     
    var Cat = function (name) {
        this.name = name;
        this.shout = function () {
            alert(this.name + ",正在喵喵叫!");
        };
    };
    Cat.extends(Animal);
     
    //原型继承
    //Dog.prototype = Cat.prototype = new Animal();
    /*inherit(Dog, Animal);
            inherit(Cat, Animal);*/
    //Dog.extends(Animal);
    //Cat.extends(Animal);
     
    /*var xh = new Dog("小黑");
            xh.sayhello();
            xh.shout();
            xh.game();
             
            var xm = new Cat("小咪");
            xm.sayhello();
            xm.shout();
            xm.game();*/
     
    var Husky = function (name, color, sex) {
        this.name = name;
        this.color = color;
        this.sex = sex;
        this.sayhello = function () {
            alert("Hello,我是一条小" + this.sex + "狗,有一个非常好听的名字,叫:“" + this.name + "”,你愿意和我做朋友吗?");
        };
        this.showcolor = function () {
            alert(this.color);
        };
        /*this.shout = function()//重写父类的函数
                {
                    alert(this.name + ",哼哼叫!");
                };*/
    };
    Husky.extends(Dog);
     
    var xh = new Husky("小哈", "黑白", "公");
    xh.sayhello();
    xh.shout();
    xh.game();
    xh.showcolor();
  • 相关阅读:
    模块化 —— CommonJS、AMD、UMD、ESM(下)
    模块化 —— CommonJS、AMD、UMD、ESM(上)
    移动端事件(四)—— 函数防抖和函数节流
    移动端事件(三)—— 横竖屏与加速度、移动的方块
    一起来学JavaScript吧(JS兔子领进门)
    【资源】一些常用的前端资源网站(不定期更新)
    redis
    django-高并发解决方案--负载均衡
    输入某年某月某日,判断这一天是这一年的第几天
    一篇英文文档中找出频数最多的10个单词
  • 原文地址:https://www.cnblogs.com/leejersey/p/4231974.html
Copyright © 2020-2023  润新知