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


    <!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"}

    // 返回一个新对象,这个对象同时拥有o的属性和p的属性
    // 如果o和p中有重名属性,使用p中的属性值
    function union(o,p){
    return extend(extend({},p),o)
    }
    // console.log(union(o,p));
    // 返回一个新对象,这个对象拥有同时在o和p的属性,很像求o和p的交集,但p中属性的值被忽略
    function intersection(o,p){
    return restrict(extend({},o),p);
    }
    // console.log(intersection(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;//返回这个数组
    }
    console.log(keys(o))


    </script>
    </body>
    </html>

  • 相关阅读:
    如何在android studio 1.0 启动时设置代理【解决WARN
    【转】如何阅读android源码
    【Android】 BroadcastReceiver详解
    如何在Android app中支持多主题
    从源码角度剖析 setContentView() 背后的机制
    【转】Android EditText的使用及值得注意的地方
    【转】Android应用程序打包时,出现错误:"XXX" is not translated in "af" (Afrikaans), "am" (Amharic), "ar" (Arabic).....
    【转】Fragment对用户可见的判断实践,亲测有效
    【转】从java1到java9每个版本都有什么新特性?
    【转】贝塞尔曲线介绍
  • 原文地址:https://www.cnblogs.com/studyh5/p/9232868.html
Copyright © 2020-2023  润新知