zoukankan      html  css  js  c++  java
  • Class 类

    在javascript 中应用类的概念

    // javascript web applications 富应用开发
    
    // 类库:生成类的地方;给所有的构造函数提供基础方法,如 extend, include...
    var Class = function () {
        
        var klass = function () {
    
            // 实例化对象时立即运行init函数
            this.init.apply(this, arguments);
        };
    
        klass.prototype.init = function () {};
    
        // 定义 prototype 的别名
        klass.fn = klass.prototype;
    
        // 给类添加属性
        klass.extend = function (obj) {
            var prop;
            for (prop in obj) {
                klass[prop] = obj[prop];
            }
        };
    
        // 给实例添加属性
        klass.include = function (obj) {
            var prop;
            for (prop in obj) {
                klass.fn[prop] = obj[prop];
            }
        };
    
        return klass;  // 仍然返回一个类
    };
    
    // new 一个类
    var Person = new Class();
    
    /* 
     * 初始化方法(生成实例的时候一定会运行的方法)
     *
     * 等同于:
     *
     * var Person = function (name) {
     *    this.name = name;
     * };
    */
    Person.prototype.init = function (name) {
        this.name = name;
    };
    
    // 原型方法
    Person.include({
        say: function () {
            console.log(this.name + " say hello to everyone!");
        }
    });
    
    var person = new Person("Davi");
    
    person.say();  // Davi say hello to everyone!

    用 backboon.js 实现类

    /*
     * <script src="js/underscore-1.6.0.js"></script>
     * <script src="js/backbone-1.1.2.js"></script>
     *
     * backboon.js 是一个 MVC 框架
     * 重度依赖 underscore.js
    */
    
    // 用 backbone 框架实现类
    var Person = Backbone.Model.extend({
        initialize: function (attr) {
            var prop;
            for (prop in attr) {
                this[prop] = attr[prop];
            }
        },
        say: function () {
            console.log(this.name + " is " + this.age + " years old.");
        }
    });
    
    // 类的原型继承:即父类的扩充
    var Student = Person.extend({
        study: function () {
            console.log("good good study!");
        }
    });
    
    // 实例化的时候执行了 initialize 初始化函数
    var s = new Student({
        name: "Davi",
        age: "20"
    });
    
    // Person 的 say 方法;Student 的 study 方法。
    s.say();    // Davi is 20 yeas old.
    s.study();  // good good study!

    Backbone 与 jQuery

    // backboon 数据模型
    var model = new Backbone.Model({
        name: "this is a model",
        ver: "1.0"
    });
    
    // underscore
    _.each(model.attributes, function (value, key) {
        console.log(key + " : " + value);
    });
    
    _.each(model.values(), function (value) {
        console.log(value);
    });
    
    // jquery or zepto
    $.each(model.attributes, function (key, value) {
        console.log(key + " : " + value);
    });
  • 相关阅读:
    绿色通道
    Banknotes
    旅行问题
    修剪草坪
    最大连续和
    动物园
    炮兵阵地
    涂抹果酱
    牧场的安排
    国王
  • 原文地址:https://www.cnblogs.com/xiankui/p/3863269.html
Copyright © 2011-2022 走看看