您的位置:首页 > 编程语言 > Java开发

js 实现继承功能(类似java extends)

2012-03-13 11:15 633 查看
<script type="text/javascript">

Function.prototype.method = function (name, func) {

    this.prototype[name] = func;

    return this;

};

Function.method('inherits', function (parent) {

    var d = {}, p = (this.prototype = new parent());

    this.method('uber', function uber(name) {

        if (!(name in d)) {

            d[name] = 0;

        }        

        var f, r, t = d[name], v = parent.prototype;

        if (t) {

            while (t) {

                v = v.constructor.prototype;

                t -= 1;

            }

            f = v[name];

        } else {

            f = p[name];

            if (f == this[name]) {

                f = v[name];

            }

        }

        d[name] += 1;

        r = f.apply(this, Array.prototype.slice.apply(arguments, [1]));

        d[name] -= 1;

        return r;

    });

    return this;

});

function Parenizor(value) {

    this.setValue(value);

}

Parenizor.method('setValue', function (value) {

    this.value = value;

    return this;

});

Parenizor.method('getValue', function () {

    return this.value;

});

Parenizor.method('toString', function () {

    return '(' + this.getValue() + ')';

});

myParenizor = new Parenizor(11);

myString = myParenizor.toString();

console.log(myString);

function ZParenizor(value) {

    this.setValue(value);

}

ZParenizor.inherits(Parenizor);

ZParenizor.method('toString', function () {

    if (this.getValue()) {

        return this.uber('toString');

    }

    return "-0-";

});

myZParenizor = new ZParenizor(12);

myString = myZParenizor.toString();

console.log(myString);
</script>

http://javascript.crockford.com/inheritance.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java function