js原生设计模式——10适配器模式之参数适配器
原理:参数适配器说白了就是给出要带入数据字段的对应字段的默认值,一旦数据字段值不足,就取默认值补足。
[写法一]:直接返回
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>参数适配器1</title>
<script type="text/javascript">
//本地数据对象
var obj1 = {
name:'javascript高级编程2',
age:26,
price:45,
}
function doSomeThing(obj){
var _adapter = {//这个就是参数适配器,说白了就是参数默认值集合
name:'javascript高级编程',
author:'张小小',
age:28,
price:59,
press:'人民邮电出版社'
}
for(var i in _adapter){
_adapter[i] = obj[i] || _adapter[i];
}
return _adapter;
};
//测试用实例引用
var o = doSomeThing(obj1);
alert(o.name);
//本例已经通过验证
</script>
</head>
<body>
</body>
</html>
[写法一]:闭包返回
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>参数适配器1</title>
<script type="text/javascript">
//本地数据对象
var obj1 = {
name:'javascript高级编程2',
age:26,
price:45,
}
function doSomeThing(obj){
var _adapter = {//这个就是参数适配器,说白了就是参数默认值集合
name:'javascript高级编程',
author:'张小小',
age:28,
price:59,
press:'人民邮电出版社'
}
for(var i in _adapter){
_adapter[i] = obj[i] || _adapter[i];
}
return (function(){
return _adapter;
})();
};
//测试用实例引用
var o = doSomeThing(obj1);
alert(o.author);
//本例已经通过验证
</script>
</head>
<body>
</body>
</html>
[写法三]:匿名对象返回
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>参数适配器1</title>
<script type="text/javascript">
//本地数据对象
var obj1 = {
name:'javascript设计模式与开发实践',
age:26,
price:45,
}
function doSomeThing(obj){
var _adapter = {//这个就是参数适配器,说白了就是参数默认值集合
name:'javascript高级编程',
author:'张小小',
age:28,
price:59,
press:'人民邮电出版社'
}
return {
dataobj:function(){
for(var i in _adapter){
_adapter[i] = obj[i] || _adapter[i];
}
return _adapter;
}
}
};
//测试用实例引用
var o = doSomeThing(obj1);//o变量引用的是返回的匿名对象
alert(o.dataobj()['name']);//dataobj是匿名对象中的方法,只有执行一次后才会得到方法中的返回值_adapter,所以就有了dataobj()['name']的写法
//本例已经通过验证
</script>
</head>
<body>
</body>
</html>
js原生设计模式——10适配器模式之参数适配器的更多相关文章
- js原生设计模式——2面向对象编程之继承—多继承
1.单对象克隆 <!DOCTYPE html><html lang="en"><head> <meta charset=" ...
- js原生设计模式——2面向对象编程之继承—new+call(this)组合式继承
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- js原生设计模式——2面向对象编程之继承—call(this)构造函数式继承
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- js原生设计模式——13桥接模式(相同业务逻辑抽象化处理的职责链模式)
桥接模式之多元化类之间的实例化调用实例 <!DOCTYPE html><html lang="en"><head> <meta ch ...
- js原生设计模式——8单例模式之简约版属性样式方法库
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- js原生设计模式——8单例模式
1.单例模式——在js中就是指的单个对象,可用于命名空间声明 2.示例 <!DOCTYPE html><html lang="en"><head> ...
- js原生设计模式——7原型模式之new+call(this)组合应用再探讨实例
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- js原生设计模式——4安全的工厂方法模式之Factory方法模式
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- js原生设计模式——4安全的工厂方法模式之oop编程增强版
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
随机推荐
- Block 进阶
转载自:http://www.cnblogs.com/xiaofeixiang/p/4666796.html 关于Block之前有一篇文章已经写过一篇文章Object-C-代码块Block回顾,不过写 ...
- Android性能优化典范---转
Android性能优化典范 原文链接: http://hukai.me/android-performance-patterns/ JAN 17TH, 2015 | COMMENTS 2015新年伊 ...
- IE6里面子集尺寸大的会把父亲撑大
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Android--->Button按钮操作
main.xml中设置两个按钮 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xm ...
- HDU 1166 敌兵布阵(树状数组)
之前用过了线段树的做法,树状数组的也补上吧 #include<iostream> #include<cstdio> #include<cstring> using ...
- Android提高第十二篇之蓝牙传感应用
请问淘宝上买的单片机蓝牙模块与安卓/android手机通讯的时候需要设置UUID吗? 2013-02-15 09:39 在世张辽 | 浏览 2769 次 想用安卓手机和单片机通过蓝牙模块通讯, ...
- json转义字符串
json前台写数据 @RequestMapping("/addUserJson") public void addUserJson(User user,HttpServletReq ...
- C语言写的俄罗斯方块
源:C语言写的俄罗斯方块 2014年最后一天, 任天堂将风靡全球30年的经典游戏<<俄罗斯方块>>下架. 作为全球最畅销的游戏, 其移植版本遍布各个平台. 下面这个是我去年在5 ...
- hbase 第一篇
参考:http://www.jdon.com/38244 http://chuanwang66.iteye.com/blog/1683533
- Delphi中建立指定大小字体和读取该字体点阵信息的函数(转)
源:Delphi中建立指定大小字体和读取该字体点阵信息的函数 Delphi中建立指定大小字体和读取该字体点阵信息的函数 作者:Thermometer Email: webmaster@daheng- ...