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

[写法一]:直接返回

<!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. Ubuntu 下开发 Android 环境变量设置

    -----------------------------------------------------ANDROID_SDK_HOME:/home/cmm/avds PATH:/home/cmm/ ...

  2. StartUML 各种类图的例子

    1.UML分为: 1)静态建模:系统基础和系统固定框架结构,这些图形往往是“静态”的. 类图(Class Diagram):常用来分析业务概念 用例图(Use Case Diagram):常用 对象图 ...

  3. SQL Server 事务及回滚事务的几种方法

    第一种: declare   @iErrorCount   int set@iErrorCount=0 begintran Tran1    insertinto t1(Id, c1) values( ...

  4. svn代码管理的使用工作流程

    1. 新建代码库repository. 2. checkout 到workspace. 3. checkin 回 repository. 4. release 一个版本出来(相当于拉出一个branch ...

  5. Ubuntu 12.04下安装thrift 0.9

    Thrift这里就不介绍了,只说一句--Facebook很牛逼. 我这里安装Thrift主要是为Accumulo数据库作准备,所以java语言为必选项. 具体安装参考官方Apache Thrift R ...

  6. CodeForces 616A Comparing Two Long Integers

    水题 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; +; ...

  7. linux自动启动程序

    下面用自启动apache为例: 有两种方法可以让Apache在系统启动时自动启动   1. 在/etc/rc.d/rc.local中增加启动apache的命令,例如:/usr/local/httpd/ ...

  8. avi格式详细介绍

    百度:http://wenku.baidu.com/link?url=KB7qKc6UG4aeU-i9FtXeV8Uou4JHPceiyz3HNbzCrQw4phY-qRlcp3tTSwYPeIgdx ...

  9. 无限循环小数POJ1930

    题意:给定一个无限循环小数,求其分数形势,要求分母最小 分析:看了别人的题解才做出来的,将无限循环小数转化成分数,分为纯循环和混循环两种形式. (1)对于纯循环:用9做分母,有多少个循环数就几个9,比 ...

  10. (中等) POJ 2886 Who Gets the Most Candies? , 反素数+线段树。

    Description N children are sitting in a circle to play a game. The children are numbered from 1 to N ...