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;
    }
  • 相关阅读:
    322. Coin Change
    368.[LeetCode] Largest Divisible Subset
    c++
    python 循环
    2018今日头条
    c++中set的用法
    [LeetCode]48. Rotate Image 旋转图片
    [LeetCode]47. Permutations II
    [LeetCode]46. Permutations
    sys与os模块(转载)
  • 原文地址:https://www.cnblogs.com/wang-jiang/p/4472832.html
Copyright © 2011-2022 走看看