js设计模式
2021-04-09 05:27
标签:cti 策略模式 esc UNC 使用 return var call 集合 2构造函数模式 3原型模式 4单例模式 5策略模式 js设计模式 标签:cti 策略模式 esc UNC 使用 return var call 集合 原文地址:https://blog.51cto.com/14584021/2476684
优点 避免创建多次对象
function Factory(n,s){
//创建一个对象
var obj={};
obj.name=n;
obj.sex=s;
obj.sleep=function (){
return this.name+"睡觉";
}
return obj;
}
console.log(Factory("李四", "男"));
接定义函数 this(指针) 指向当前实例的对象
里面的方法和属性直接写 this.***
没有明显的创建对象 没有返回值function Page(){
this.nowpage=1;
this.totlepage=20;
this.data=null;
this.createpageLi=function (){
console.log("构造函数模式的方法");
}
}
//实例化对象
var page=new Page();
function Person() {
}
//原型独享的属性和方法的
Person.prototype = {
name: "",
sex: "",
sleep: function (m) {
return this.name + "睡觉" + m;
}
}
var per1 = new Person();
per1.name = "张三";
per1.sex = "男";
console.log(per1);
一个类仅提供一个实例 并且暴露出一个全局访问点
//设置多个类对象 将单例方法抽为一个共享方法function Person(name) {
this.name = name;
}
Person.prototype.getName = function () {
return this.name;
}
var getInstance = function (callback) {
var instance = null;
//注意里面的闭包
return function () {//不写形参 直接使用arguments 集合列表
if (!instance) {
//实例化对象的
/*callback 是回调函数 返回一个对象
apply call 替换对象的时候可以直接执行函数*/
instance = callback.apply(this, arguments);
}
return instance;
}
}
console.log(getInstance(function () {
//这个匿名函数内部返回一个对象
var per = new Person("李四");
return per;
})().getName());
function Animal(name) {
this.name = name;
}
Animal.prototype.getName = function () {
return this.name;
}
var method = getInstance(function (name) {
//这个匿名函数内部返回一个对象
var animal = new Animal(name); //刚才在这里直接给name赋值了
return animal;
});
console.log(method("猫咪").getName());
console.log(method("小黑").getName());
//call apply 替换对象this的 传递参数 call 参数是this ,序列参数 apply 参数this ,集合参数
策略模式是将算法和 算法的使用分离//策略
var levelable={
S:8,
A:6,
B:4,
C:2,
D:0
}
//策略使用 策略集合
var levelScore={
baseScore:70,
S:function (){
return this.baseScore+levelable["S"];
},
A:function (){
return this.baseScore+levelable["A"];
},
B:function (){
return this.baseScore+levelable["B"];
},
C:function (){
return this.baseScore+levelable["C"];
},
D:function (){
return this.baseScore+levelable["D"];
}
}
//得分情况
function getScore(score,level)
{ levelScore.baseScore=score;
console.log(levelScore[level]());
}
getScore(60,"S");
上一篇:PHP学习的技巧和学习的要素总结
下一篇:php实现验证邮箱格式的代码实例