JavaScript对象的常用函数

/**
*
* 把p中可枚举的的属性复制到o中,并返回o
* 如果o和p中含有同名属性,则覆盖o中的属性。
* 这个函数并不处理getter和setter以及复制属性
*
*/
function extend(o, p) {
    for (prop in p) {
        o[prop] = p[prop];
    }
    return 0;
}

/**
* 将p中的可枚举属性复制到o中,并返回o
* 如果o和p中有同名的属性,o中的属性将不受影响
* 这个函数并不处理getter和setter以及复制属性
*/

function merge(o, p) {
    for (prop in p) {
        if (o.hasOwnProperty[prop]) continue; //如果o已经有这个属性
        o[prop] = p[prop];
    }
    return o;
}

/**
* 如果o中的属性在p中没有同名属性,则从o中删除这个属性
* 返回o
*/
function restrict(o, p) {
    for (prop in o) {
        if (! (prop in p)) delete o[prop];
    }
    return o;
}
/**
*如果o中的属性存p在同名属性,则从o中删除这个属性
* 返回o
**/
function subtract(o, p) {
    for (prop in p) {
        delete o[prop];
    }
    return o;
}

/**
 * 返回一个新对象,这个对象同时拥有o的属性和p的属性
 * 如果o和p中有重名属性,使用p的属性值
*/
function union(o, p) {
    return extend(extend({}, o), p);
}

/**
 * 返回一个新对象,这个对象拥有同时在o和p中出现的属性
 * 很像o和p的交集,但p中属性的值被忽略
*/
function intersection(o, p) {
    return restrict(extend({}, o), p)
}
/**
 * 返回一个数组,这个数组包含的是o中可枚举的自有属性的名字
*/
function keys(o) {
    if (typeof o !== "object") throw TypeError();
    var result = [];
    for (var prop in o) {
        if (o.hasOwnProperty(prop))
            result.push(prop);
    }
    return result;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值