zoukankan      html  css  js  c++  java
  • JS设计模式——1.富有表现力的JS

    创建支持链式调用的类(构造函数+原型)

    Function.prototype.method = function(name, fn){
        this.prototype[name] = fn;
        return this;
    };
    
    //构造函数+原型 创建类
    var Anim = function(){};
    Anim.method('starts', function(){
        console.log('starts');
    }).method('ends', function(){
        console.log('ends');
    });
    
    var a = new Anim(); //注意new不能少
    a.starts();
    a.ends();

    匿名函数创建闭包构造私有变量

    var baz;
    (function(){
        var foo = 10; //私有变量
        var bar = 2;
        baz = function(){ //访问私有变量的接口
            return foo * bar;
        };
    })();
    console.log(baz());

    对象的易变性

    这个没什么稀奇的,了解了原型链是怎么一回事,这个跟不不在话下。(我们可以在创建实例后添加方法和修改方法,甚至删除方法)。

    var Person = function(name, age){
        this.name = name;
        this.age =age;
    };
    
    Person.method('getName', function(){
        return this.name;
    }).method('getAge', function(){
        return this.age;
    });
    var alice = new Person('alice', 95);
    var bill = new Person('bill', 30);
    
    Person.method('getGreeting', function(){ //在创建实例后继续添加方法
        return 'Hi ' + this.getName() + '!' ;
    });
    
    alice.displayGreeting = function(){
        return this.getGreeting();
    };
    
    console.log(alice.getGreeting());
    console.log(bill.getGreeting());
    console.log(alice.displayGreeting());
    /*bill.displayGreeting();*/
  • 相关阅读:
    Optimal Milking
    Alice's Chance
    The Perfect Stall
    项目范围管理
    计算机网络总结 第六章 网络层
    计算机网络总结 第一章 计算机网络概论
    Http与url
    javaScript期末复习基础
    计算机网络各层涉及协议
    javaScript_canvas 面向对象实现
  • 原文地址:https://www.cnblogs.com/JChen666/p/3561072.html
Copyright © 2011-2022 走看看