zoukankan      html  css  js  c++  java
  • 继承模式 命名空间和对象枚举

    实现继承的最好方式,A继承自B ,A的改变又不影响到B

    圣杯模式

    function inherit(Target,Origin){

      function Fn(){};   //中转函数

      Fn.prototype = Origin.prototype;

      Target.prototype =new Fn();  //目标函数继承自中转函数的构造函数

      Target.prototype.construct = Target;  //使目标函数的construct指向自身

      Target.prototype.uber = Origin.prototype; //保存目标函数的超级父类

    }

    function Father(){};

    inherit(Son,Father);

    var father =  new Father();

    var son = new Son();

    实现变量的复用

    1 全局变量

    2 闭包(解决变量污染,实现私有化变量)

    var name = 'pillar';

    var init=(function(){

      var name = 'xudan';

      function callName(){

        cosole.log(name);

      }

      return function(){  //作为函数返回存到外部函数里

        callName();

      }

    }());

    init();

    中括号实现属性的拼接

    var deng = {

      wife1 : {name : "wife"},

      wife2 : {name : "xiaosan"},

      wife3 : {name : "xiaosi"},

      wife4 : {name : "xiaowu"},

      sayWife:function(num){

        return this['wife'+num];

      }

    }

    在遍历对象枚举的过程中,必须使用中括号进行遍历

    var obj = {

      name : 'dan',

      sex : 'girl',

      age : 18

    }

    for(var key in obj){

      console.log( obj.key );//undefined   解析过程 : obj.key ==> obj['key']

      console.log(obj[key]);//这样是可以的

    }

    遍历某个特定属性时则要采用 obj['key']

    实现像jquery那样连续的调用

    var Dom={

      cute:function(){

        console.log("you are so cute");

      },

      hard:function(){

        console.log("you must be so hard");

      }

    }

    如何实现连续的调用呢?

    Dom.cute().hard(); 

    这样肯定是会报错的,调用一次后返回值是undefined,再次调用肯定报错

    解决办法:

    var Dom={

      cute:function(){

        console.log("you are so cute");

        return this;

      },

      hard:function(){

        console.log("you must be so hard");

        return this;

      }

    }

    Dom.cute().hard(); //这样即可实现链式调用

    css筛选操作

    $("#box").addClass("show").filter(function( index ){

        return index==1 || $(this).attr("id")=="d3"

      }).addClass("c2");

    })

    .end()找到当前结果集的上一集

    .endself()找到当前结果集和上一级

    例如:

    $("#box").childern("span").addClass("show").end().css("color":red);//这时候操作的就是box的字体颜色

    $("#box").childern("span").addClass("show").endself().css("color":red);//这时候操作的就是box和span的字体颜色

    A instanceof B 的具体含义就是看A的原型链上有没有B的原型

    判断引用类型的具体类型

    var   a = [] || {}?具体怎么判断

    方法一

    [].constructor    // function Array(){}

    {}.constructor   //报错

    方法二

    [].instanceof Array   // true

    var obj = {};

    obj.instanceof Array   // false

    方法三

    object.prototype.toString = function(){

      //识别this

      //返回对应的结果

    }

    object.prototype.toString.call( [] ); // [object Array]

    object.prototype.toString.call( 123 ); // [object Number]

    object.prototype.toString.call( {} ); // [object Object]

    深度克隆

    var obj={

      name:'xudan',

      age:18,

      card:['visa','unionpay'],

      bf:{

        name:'pillar',

        son:{

          name:'mimi'

        }

      }

    }

    var obj1={};

    遍历对象  for( var prop in origin)

    1 判断是不是原始值,是的话直接赋值 typeof(origin[prop])=="object"

    2 判断是数组还是对象 Object.prototype.toString.call(origin[prop]) == "[object Array]";

    3 建立相应的对象和数组

    递归

    function deepClone(origin,targe){

      var target = target || {};

      var toStr = Object.prototype.toString;

      var arrStr = "[object Array]";

      for( var prop in origin){

        if(origin.hasOwnproperty[prop]){

          if(origin[[prop] !== 'null' && typeof(origin[prop])=="object"){

            if(toStr.call(origin[prop]) == arrStr ){

              target[[prop] = [];

            }else{

              target[[prop] = {};

            }

            deepClone(origin[prop],target[prop]);

          }else{

            target[[prop] = origin[[prop];

          }

        }

      }

      return target;

    }

    听了两节视频,觉得受益匪浅,所以把一些总结写到了这里来,希望自己能渐渐地融会贯通用到自己的项目里。

  • 相关阅读:
    博科SAN交换机基本配置(华为SNS系列交换机为例OEM博科)
    华为SNS交换机(OEM博科FC交换机)Fabric OS: v 8版本后通过https方式浏览器访问交换机Webtools显示没有匹配的加密算法套件的解决办法
    SNS光纤交换机怎样禁用 Virtual Fabric模式
    光纤网络的相关知识
    元音老人:怎样了生死
    戒淫偈【每天念十遍】。。。
    戒淫偈汇集
    净空老法师:你能这样念上一个星期试试看,肯定比你过去念十年还有效!
    修华严奥旨妄尽还原观 第6集
    贤公和尚,佛门榜样。-海贤老和尚往生纪实
  • 原文地址:https://www.cnblogs.com/xuniannian/p/8533462.html
Copyright © 2011-2022 走看看