码迷,mamicode.com
首页 > 其他好文 > 详细

用来枚举属性的对象工具函数

时间:2018-06-27 11:33:00      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:覆盖   存在   UNC   property   name   nan   影响   log   char   

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>对象的枚举属性</title>
</head>
<body>
<script>
// 用来枚举属性的对象工具函数
/*把p中的可枚举属性复制到o中,并返回o,
如果p和o中含有同名属性,则覆盖o中的属性,
这个函数并不处理getter和setter以及复制属性。*/
function extend(o,p){
for(prop in p){//遍历p中的所有属性
o[prop] = p[prop];//将属性添加到o中
}
return o;
}
var o = {
name:‘anan‘,
age:‘22‘,
sex:‘girl‘,
}
var p = {
name:‘xiaoke‘,
age:‘0‘,
love:‘sing‘,
father:‘yy‘
}
/*var extenddata = extend(o,p);
console.log(extenddata);*/
// Object {name: "xiaoke", age: "0", sex: "girl", love: "sing", father: "yy"}
/*把p中的可枚举属性复制到o中,并返回o,
如果p和o中含有同名属性,o中的属性不受影响,
这个函数并不处理getter和setter以及复制属性。*/
function merge(o,p){
for(prop in p){
if(o.hasOwnProperty(prop)) continue;//o.hasOwnProperty[prop]过滤掉已经在o中存在的属性
o[prop] = p[prop];
}
return o;
}
/*var mergedata = merge(o,p);
console.log(mergedata);*/
// Object {name: "anan", age: "0", sex: "girl", love: "sing", father: "yy"}
// 如果o中的属性在p中没有同名属性,则从o中删除这个属性。返回o
function restrict(o,p){
for(prop in o){
if(!(prop in p)) delete o[prop];//如果p中不存在,则删除
}
return o;
}
/*var restrictdata = restrict(o,p);
console.log(restrictdata);*/
// Object {name: "anan", age: "22"}
// 如果o中的属性在p中存在同名属性,则从o中删除这个属性,返回o
function subtract(o,p){
for(prop in p){
delete o[prop];
}
return o;
}
/*var subtractdata = subtract(o,p);
console.log(subtractdata);*/
// Object {sex: "girl"}
</script>
</body>
</html>

用来枚举属性的对象工具函数

标签:覆盖   存在   UNC   property   name   nan   影响   log   char   

原文地址:https://www.cnblogs.com/studyh5/p/9232868.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!