• 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);
    });
  • 相关阅读:
    文件下载与中文文件名乱码问题解决
    文件字符编码的转换
    HTML速记
    MySQL学习笔记——安装
    C#防止重复弹出多个窗体
    ASP.NET Gridview中自带的日期格式设置功能
    [转]MSDTC on server '''' is unavailable. 的解决办法
    [转]关于SQL中Between语句查询日期的问题
    [转]SQL触发器实例讲解
    SQL索引技巧_1
  • 原文地址:https://www.cnblogs.com/xiankui/p/3863269.html
Copyright © 2020-2023  润新知