oop - javascript封装模拟一个类继承
PHPz
PHPz 2017-04-10 15:31:02
[JavaScript讨论组]
/**
 * 该方法的功能是实现一个OOP中的Class。
 * 该方法可以传入两个参数,一个是Parent Class,另外一个就是Class自身的配置。
 * 第一个参数为可选参数,在不使用此参数的时候,则类似于下面代码中的Pet的定义。
 * 如果使用了第一个参数,泽类似于下面代码中的Dog的定义。
 *
 * 如果用户定义了Parent Class,则返回的Function需要增加一个属性$super,指向Parent Class。
 *
 * @param parent 可选参数,如果第一个参数不为Function,则相当于用户未指定Parent Class。
 * @param options Class本身的配置。
 * @returns {Function} 无论如何都需要返回一个Function。
 */
var Class = function(parent, options) {
};

var Pet = Class({
    constructor: function(name, age) {
        this.name = name;
        this.age = age;
    },
    eat: function() {
        console.log('eating');
    },
    sleep: function() {
        console.log('sleeping');
    },
    toString: function() {
        return '[' + this.name + ',' + this.age + ']';
    }
});

var Dog = Class(Pet, {
    constructor: function() {
        Dog.$super.apply(this, arguments);
    },
    bark: function() {
        console.log('barking');
    }
});

var dog = new Dog('a stupid dog', 10);
console.log(dog instanceof Pet); // true
dog.eat(); // eating
dog.bark(); // barking
dog.sleep(); // sleeping

console.log(dog.toString()); // [a stupid dog,10]
PHPz
PHPz

学习是最好的投资!

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号