原理:参数适配器说白了就是给出要带入数据字段的对应字段的默认值,一旦数据字段值不足,就取默认值补足。

[写法一]:直接返回

<!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适配器模式之参数适配器的更多相关文章

  1. js原生设计模式——2面向对象编程之继承—多继承

    1.单对象克隆 <!DOCTYPE html><html lang="en"><head>    <meta charset=" ...

  2. js原生设计模式——2面向对象编程之继承—new+call(this)组合式继承

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  3. js原生设计模式——2面向对象编程之继承—call(this)构造函数式继承

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  4. js原生设计模式——13桥接模式(相同业务逻辑抽象化处理的职责链模式)

    桥接模式之多元化类之间的实例化调用实例 <!DOCTYPE html><html lang="en"><head>    <meta ch ...

  5. js原生设计模式——8单例模式之简约版属性样式方法库

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  6. js原生设计模式——8单例模式

    1.单例模式——在js中就是指的单个对象,可用于命名空间声明 2.示例 <!DOCTYPE html><html lang="en"><head> ...

  7. js原生设计模式——7原型模式之new+call(this)组合应用再探讨实例

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  8. js原生设计模式——4安全的工厂方法模式之Factory方法模式

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  9. js原生设计模式——4安全的工厂方法模式之oop编程增强版

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

随机推荐

  1. android脚步---跟随手指动的小球

    这次的学习主要是在包里面除自动生成的mainactivity.java之外,再新建一个class, DrawView,在mainactivity里面调用DrawView. 在DrawView里面主要是 ...

  2. jquery奇怪的问题

    Jquery中 $("#data_table4 tr:eq(0)").after("<tr><td>" +result+data.row ...

  3. Win7+QTP10.0+IE9无法启动IE的解决方法

    请安装QTP补丁QTP_00626. 更多补丁请查阅:http://www.cnblogs.com/testware/archive/2010/10/13/1849985.html

  4. Winform带dataGridview的Combox控件

    调用控件: public partial class Form1 : Form { public Form1() { InitializeComponent(); //---------------- ...

  5. JAVA基础-- 对象转型 (casting)

    1. 一个基类的引用类型变量可以指向其子类的对象: a=new Dog("bigyellow","yellow"); 2. 一个基类的引用不可以访问其子类对象新 ...

  6. 定时且周期性的任务研究I--Timer

    很多时候我们希望任务可以定时的周期性的执行,在最初的JAVA工具类库中,通过Timer可以实现定时的周期性的需求,但是有一定的缺陷,例如:Timer是基于绝对时间的而非支持相对时间,因此Timer对系 ...

  7. pe and elf

    http://staff.ustc.edu.cn/~sycheng/sst/exp_crack/ELF.pdf https://refspecs.linuxbase.org/elf/TIS1.1.pd ...

  8. IFields Interface 定义一个字段集合对象

    Description The Fields object represents a collection of columns in a table. The term field is synon ...

  9. Keepalived详细介绍简介

    1.1.Keepalived简介 Keepalived是Linux下一个轻量级别的高可用解决方案.高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可 ...

  10. ubuntu 开启 ftp 服务 | mingming-killer

    body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...