javascript设计模式1

普通写法

function startAnimation(){
    ...
}
function stopAnimation(){
    ...
}

对象类

/*Anim class*/
var Anim=function(){
    ...
};
Anim.prototype.start = function() {
    ...
};
Anim.prototype.stop = function() {
    ...
};
/*Usage*/
var myAnim=new Anim();
myAnim.start();
...
myAnim.stop();
...

也可以这样写

var Anim=function(){
    ...
};
Anim.prototype={
    start:function(){
        ...
    },
    stop:function(){
        ...
    }
};

再尝试一种

Function.prototype.method=function(name,fn){
    this.prototype[name]=fn;
};
var Anim=function(){
    ...
};
Anim.method('start',function(){
    ...
});
Anim.method('stop',function(){
    ...
});

更进一步

Function.prototype.method=function(name,fn){
    this.prototype[name]=fn;
    return this;
};
var Anim=function(){
    ...
};
Anim.method('start',function(){
    ...
}).
Anim.method('stop',function(){
    ...
});

利用匿名函数我们可以这样

(function(){
    var foo=10;
    var bar=2;
    alert(foo*bar);
})();

也可以这样

(function(foo,bar){
    alert(foo*bar);
})(10,2);

在js中,一切都是对象

function displayError(message){
    displayError.numb++;
    alert(message);
};
displayError.numb=0;

引申一下

function Person(name,age){
    this.name=name;
    this.age=age;
};
Person.prototype={
    getName:function(){
        return this.name;
    },
    getAge:function(){
        return this.age;
    }
}
var alice=new Person('Alice',26);
var bill=new Person('Bill',23);
Person.prototype.getGreeting=function(){
    return 'Hi'+this.getName()+'!';
};
alice.displayGreeting=function(){
    alert(this.getGreeting());
}
原文地址:https://www.cnblogs.com/sdgjytu/p/4200059.html