首页 > IT职业 > IT职场 > JQ中promise设计之精妙
假设我们有一个方法对象有两个属性方法如下;
function test(name){
var name=name;
var re={};
re.getName=function(){return name;};
re.setName=function(newName){name=newName;return this};
return re;
}
alert(test("张三").setName("王五").getName()); 如果这时我们需要权限设置,对外只开放getName方法,不开放setName方法,就可以借鉴JQ的promise实现
function test(name,flag){
var name=name;
var re={};
var promise={
getName:function(){return name;},
promise:function(obj){
return obj!=null?$.extend(obj,promise):promise;
}
};
re.setName=function(newName){
name=newName;
return this;
};
promise.promise(re);
return flag?re:re.promise();
}
console.log(test("wwb").getName());
// console.log(test("wwb").setName("aaa").getName());
console.log(test("wwb",true).getName());
console.log(test("wwb",true).setName("aaa").getName()); 注释掉的会报错
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2387/viewspace-2798095/ ,如需转载,请注明出处,否则将追究法律责任。