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();*/

 

你可能感兴趣的:(设计模式)