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();*/
  • 相关阅读:
    概率图模型课堂笔记:2.4 取样方法
    概率图模型课堂笔记:2.2 置信度传播
    2018秋季学期学习总结
    人生路上影响最大的三位老师
    抓老鼠啊~亏了还是赚了?
    币值转换
    自我介绍
    打印沙漏
    2019春第七周作业
    第六周编程总结
  • 原文地址:https://www.cnblogs.com/JChen666/p/3561072.html
Copyright © 2011-2022 走看看