zoukankan      html  css  js  c++  java
  • 2013学习总结----JavaScript

    javascript面向对象,实现的几种方式

    1:直接使用JSON对象

            var o1={
                "a":1,
                "b":2,
                "c":function() {
                }    
            }

     

     

    2:把函数作为对象

    复制代码
    function HandleOne() {
            var test = 0;
            this.setFlag = function() {
                test = 1;
            }
            this.displayFlag = function() {
            console.log("这是逻辑1中的变量值:" + test);
            }
            return this;
        }
        
        
        var H1 = HandleOne();
        H1.displayFlag();  //逻辑1输出自己的变量
    复制代码

     

     

    3:匿名函数的方式 

    复制代码
    //匿名函数的方式
        var H1 = (function() {
            var test = 0;
            this.setFlag = function() {
                test = 1;
            }
            this.displayFlag = function() {
                console.log("这是逻辑1中的变量值:" + test);
            }
            //返回this对象,以访问module里定义的函数
            return this;
        } ());
        
        H1.displayFlag();  //逻辑1输出自己的变量
    复制代码

     

     

    4: 只暴漏对象中的特定元素

    复制代码
        var person = function () {
            // Private
            var name = "Robert";
            return {
                getName: function () {
                    return name;
                },
                setName: function (newName) {
                    name = newName;
                }
            };
        } ();
        alert(person.name); // Undefined
        alert(person.getName()); // "Robert"
        person.setName("Robert Nyman");
        alert(person.getName()); // "Robert Nyman"
    复制代码

    jquery extend 函数使用方法

    复制代码
    $(function(){
    
    //测试extend的基本用法
    //后面的对象可以覆盖前面的对象,有的元素可以覆盖,没有的元素可以补充
    var e1=$.extend({"a":1,"b":2},{"d":3,"b":22});
    console.log(e1); 
    //result : {a: 1, b: 22, d: 3} 
    
    
    
    //测试向jquery全局对象中添加元素(可以是函数)  插件原理!!!!!
    $.extend({"a":function() {
        alert("33333");
    }});
    
    $.a();
    //result :弹出 33333对话框
    
    
    
    //测试向jquery对象中扩展元素的方法 插件原理!!!!!
    //以及this转换成jquery对象的方法
    //以及jquery对象和dom对象之间的转换
    $.fn.extend({"a":function() {
        console.log($(this).attr("name"));
        console.log($(this)[0].name);
    }});
    
    
    $("#tt1").a();
    
    //html中的内容:<a href="#" id="tt1" name="sdfsdf">ssss</a> 
    //result:sdfsdf sdfsdf
    
    
    
    //测试extend深度拷贝和浅拷贝的不同
    //面度嵌套对象,如果是浅度拷贝,只是用上一个去替换上一个;如果是深度拷贝,会对嵌套的对象进行复杂的extend操作
    var e2=$.extend(true,{"a":1,"b":2,"c":{"a":1,"b":2}},{"d":3,"b":22,"c":{"d":1,"b":22}});
    console.log(e2); 
    
    var e3=$.extend(false,{"a":1,"b":2,"c":{"a":1,"b":2}},{"d":3,"b":22,"c":{"d":1,"b":22}});
    console.log(e3); 
    
    /**
    深度拷贝result:
    Object {a: 1, b: 22, c: Object, d: 3}
    a: 1
    b: 22
    c: Object
        a: 1
        b: 22
        d: 1
    __proto__: Object
    d: 3
    
    浅度拷贝result
    __proto__: Object
     extend.html:46
    Object {a: 1, b: 22, c: Object, d: 3}
    a: 1
    b: 22
    c: Object
        b: 22
        d: 1
    __proto__: Object
    d: 3
    __proto__: Object
    **/
    });
    复制代码

     

     

    Javascript 插件式开发

     

    • 设置默认值
    • 支持jquery选择器
    • 支持jquery的链式调用
    • 插件里的方法
    复制代码
     (function ($) {
        var defaults = {
            prevId: 'prevBtn',
            prevText: 'Previous',
            nextId: 'nextBtn',
            nextText: 'Next'
            //……
        };
    
        var showLink = function (obj) {
            $(obj).append(function () { return "(" + $(obj).attr("href") + ")" });
        }
    
        $.fn.easySlider = function (options) {       
            var options = $.extend(defaults, options);
            return this.each(function () {
               showLink(this);
            });
        }
    })(jQuery);
  • 相关阅读:
    总结
    webview细节注意
    对图片的处理
    介绍并提高app中WebView的性能
    工作中新接触的问题
    iOS环信
    Framework静态库制作方法
    多线程GCD
    iOS开发之地图与定位
    ARC内存管理机制详解
  • 原文地址:https://www.cnblogs.com/baiduligang/p/4247601.html
Copyright © 2011-2022 走看看