您的位置:首页 > Web前端 > JavaScript

JavaScript之再谈对象之枚举对象的工具函数

2018-03-14 23:33 561 查看
        在JavaScript中,由于JavaScript的弱类型特征,使得JavaScript变的更加灵活,同样JavaScript中对象也是如此。var o = {
name : "wang",
age : 20,
}
var p = {
name : "zhou",
age1 : 21,
}    以上两个函数为例。
        把p中的可枚举属性复制到o中,并返回o,如果o和p中含有同名属性,则覆盖o中的属性,这个函数并不处理getter和setter以及复制属性。
function extend(o,p){
for(var prop in p){
o[prop] = p[prop];
}
return o;
}        将p中的属性复制到o中,返回o,如果o中有属性将不受影响,这个函数并不处理getter和setter以及复制属性。function merge(o,p){
for(var prop in p ){
if(o.hasOwnProperty(prop)){
continue;
}
o[prop] = p[prop];
}
return o;
}        如果o的属性在p中没有同名属性,则从o中删除这个属性并返回。function restrict(o,p){
for(var prop in o){
if(!(prop in p)){
delete o[prop];
}
}
return o;
}        如果o中的属性在p中存在同名属性,则从o中删除这个属性并返回。function subtract(o,p){
for(var prop in o ){
if(prop in p){
delete o[prop];
}
}
return o ;
}        以上是一些方法,下面用上面的方法做一些实例。
        返回一个新对象,这个对象同时拥有o的属性和p的属性,如果o和p有重名属性,使用p中的属性。function union(o,p){
return extend(extend({},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 arr = [];
for(var prop in o){
if(o.hasOwnProperty(prop)){
arr.push(prop);
}
}
return arr;
}        在ES5.0中有定义用以枚举属性的函数。
        Object.keys()返回数组,数组由对象中可枚举属性组成。console.log(Object.keys(o));        Object.getOwnPropertyNames(),返回对象中所有自有属性的名称,不仅仅是可枚举的属性
console.log(Object.getOwnPropertyNames(o));

        喜欢就收藏下。
        --主页传送门--
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息