js高级学习 点击打开链接
1、面向对象
<script>
(function(){
//单例模式
swlSingleTon = function(className, dict){
var funcStr = [];
if(dict){
for(var k in dict){
var tmp = dict[k];
if(typeof tmp === "string"){
tmp = "\"" + tmp + "\"";//字符串
}
funcStr.push(" this." + k + " = " + tmp + " ;");
}
}
var str = [];
str.push(" " + className + " = (function(){ ");
str.push(" function " + className + "(){ " + funcStr.join("") + " } ");
str.push(" var _instance; ");
str.push(" function Instance(){ ");
str.push(" if(!_instance){ ");
str.push(" _instance = new " + className + "(); ");
str.push(" }");
str.push(" return _instance; ");
str.push(" } ");
str.push(" return { ");
str.push(" Instance : Instance ");
str.push(" } ");
str.push(" })(); ");
// console.log(str.join(""));
eval(str.join(""));
}
Person = (function(){
function Person(){
this.tall = function(){
return "person tall";
}
}
// 单例模式
var _instance;
function Instance(){
if(!_instance){
// alert(1);
_instance = new Person();
}
return _instance;
}
return {
Instance : Instance
}
})();
swlSingleTon("Man", {
name: "LH",
age: 25,
hair: function(){
return "man hair";
}
});
swlSingleTon("Woman", {
name: "LH",
age: 25,
hair: function(){
return "woman hair";
}
});
})();
alert(Person.Instance().tall());
alert(Man.Instance().hair());
alert(Woman.Instance().hair());
</script>