《基于MVC的JavaScript Web富应用开发》读书笔记一:MVC和类

本文介绍了一种使用JavaScript实现类创建及继承的方法,通过构造函数和原型链的方式定义类,并展示了如何为类添加静态属性与实例方法。同时,通过一个具体的Person类实例演示了属性检查与输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Create Class:

var Class = function(parent){
    var klass = function(){
        this.init.apply(this, arguments);
    };

    if(parent) {
        var subclass = function(){};
        subclass.prototype = parent.prototype;
        klass.prototype = new subclass;
    }

    klass.prototype.init = function(){};
    klass.fn = klass.prototype;
    klass.fn.parent = klass;

    klass.proxy = function(func){
        var self = this;
        return (function(){
            func.apply(self, arguments);
        });
    };

    klass.fn.proxy = klass.proxy;

    klass.extend = function(obj){
        var extended = obj.extended;
        for(var i in obj){
            klass[i] = obj[i];
        }
        if (extended) extended(klass)
    };

    klass.include = function(obj){
        var included = obj.included;
        for(var i in obj){
            klass.fn[i] = obj[i];
        }
        if (included) included(klass)
    };

    return klass;
};

Demo:

var Person = new Class;
Person.include({
    init: function(name, age){
        this.name = name;
        this.age = Person.checkAge(age) ? age : null;
    },
    sayHello: function(){
        console.log("Hi , My name is " + this.name + (this.age ? ", i am " + this.age + " years old this year" : ""));
    }
});

Person.extend({
    needWater: true,
    checkAge: function(age){
        return age>0 && age < 150;
    }
});

var jim = new Person("Jim", 10);
jim.sayHello();
//output:Hi , My name is Jim, i am 10 years old this year

var tom = new Person("Tom", -1);
tom.sayHello();
//output:Hi , My name is Tom

extend中是静态属性和方法,include中是实例属性和方法。

  当属性和方法与具体实例无关或是公用的时候,用静态属性和方法,否则用实例属性和方法。

 

作者:Artwl

出处:http://artwl.cnblogs.com

转载于:https://www.cnblogs.com/dkwlxq/archive/2013/05/08/3066470.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值