zoukankan      html  css  js  c++  java
  • 枚举for/in

      for/in循环可以遍历对象中所有可以枚举的属性(包括自有属性和继承属性)。对象继承的内置方法不能枚举,凡是在代码中给对象自己或者继承的类添加的属性方法都是可枚举的,但是对象自有的内置属性可不可以枚举,这个不一定,比如我们可以试试Math的内置random属性(不可枚举)和window的内置name属性(可枚举)。

    一.以下总结一些枚举对象属性的工具函数:

    1.如果o和p有同名属性,p覆盖o

    function extend(o,p){
        for(prop in p){
            if(!p.hasOwnProperty(prop)) continue;//屏蔽可枚举的继承属性
            o[prop] = p[prop];
        }
        return o;
    }

    2.如果o和p有同名属性,p不影响o属性

    function merge(o,p){
        for(prop in p){
            if(!p.hasOwnProperty(prop)) continue;//屏蔽可枚举的继承属性
            if(o.hasOwnProperty(prop)) continue;//同名属性跳过
            o[prop] = p[prop];
        }
        return o;
    }

    3.如果o中属性在p没有同名属性,则删除掉o中这个属性

    function restrict(o,p){
        for(var prop in o){
            if(!prop in p) delete o[prop];
        }
        return o;
    }

    4.删除o中与p中同名的属性

    function subtract(o,p){
        for(var prop in p){
            delete o[prop];
        }
        return o;
    }
  • 相关阅读:
    微信、陌陌等著名IM软件设计架构详解
    腾讯首度公开S级手游品质管理方法
    input(file)按钮美化
    巧用css提高浏览器兼容性
    开博首记
    接口测试
    列表、元组操作
    Cacti应用
    Cacti修改采集精度为1分钟
    Centos Cacti 0.8.8g
  • 原文地址:https://www.cnblogs.com/wang-jiang/p/4472832.html
Copyright © 2011-2022 走看看