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 ...
随机推荐
- android脚步---图片浏览
简单的图片浏览器,实现图像显示与点击切换下一张 首先在main.xml里面定义一个简单的线性布局容器. <?xml version="1.0" encoding=" ...
- Android中的自定义Adapter(继承自BaseAdapter)——与系统Adapter的调用方法一致——含ViewHolder显示效率的优化(转)
Android中很多地方使用的是适配器(Adapter)机制,那我们就要好好把这个Adapter利用起来,并且用出自己的特色,来符合我们自行设计的需要喽~~~ 下面先上一个例子,是使用ViewHold ...
- HDU 3743 Frosh Week(归并排序求逆序数)
归并排序求逆序数 #include <iostream> #include <cstdio> using namespace std; #define maxn 1000005 ...
- PAT (Advanced Level) 1073. Scientific Notation (20)
简单模拟题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> # ...
- 同时运行ecstore1.2与ecstore2.0的解决方案
解决方法: php.ini中 zend_loader.license_path指向一个目录,该目录下同时包含两个developer.zl文件,一个是1.2,一个是2.0的. 为了避免俩develope ...
- particles.js 一个非常酷炫的粒子动画库
GIT 地址:https://github.com/VincentGarreau/particles.js/ 效果:
- 在MyEclipse8.6中设置jQuery自动提示 - 肖飞figo的云计算专栏 - 博客频道 - CSDN.NET
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- iOS学习笔记1--在xcode6以上的版本中不使用storyboard以及部分控件使用
首先建立一个iOS新工程,删除工程自动建立的main.storyboard以及xib文件,并且在info.plist上删除这两个选项 然后在项目配置中将maninterface设置为空,将launch ...
- iOS透明引导页
一.效果展示 这里写图片描述 这种类型的新手引导比较常见,用于告诉用户某个按钮的作用,或者提醒用户可以进行某种交互操作.引导样式是在界面上加了一个半透明的引导图,高亮部分就是要突出的区域 二.怎么做? ...
- Mac下node.js卸载方法收集
brew的安装方式 直接通过一条命令 brew uninstall nodejs 官网下载pkg安装包的 通过这条命令 sudo rm -rf /usr/local/{bin/{node,npm},l ...