美文网首页
JS对象属性

JS对象属性

作者: 苏码码 | 来源:发表于2021-03-30 22:28 被阅读0次
    var obj = new Object();
    obj.name = "nick"
    obj.age = 10
    // 属性的设置和获取  . 和 []   区别:[]可以设置变量  .取自身的属性
     var obj1 = {
      name: "mao"
    }
    var a = "name"
    console.log(obj1[a])
    
    // 属性的删除 delete
    delete obj1.name
    
    // 检测属性 判断属性中是否存在属性
    // 运算符 in 和   hasOwnProperty() 两种方式;
    console.log("name" in obj) obj中是否有name属性
    console.log(obj.hasOwnProperty("age") )
    
    
    // 遍历对象 for in
    
    var obj2 = {
        name: "qwer",
        age: 12
    }
    
    for (var key in obj2) {
      console.log(key) // 遍历出来的key 是对象的属性
    console.log(obj2[key]) // 获取属性的值
    }
    
    var arr = ['q','w','e']
    for (var i in arr) {
      console.log(i) // 遍历出来的i是索引
    }
    // forEach() 没有返回值 , map() 有返回值
    
    var arr1 = arr.forEach(function(item) {
        return item + 'a'   // 无效
    })
    console.log(arr1) // undefined
    var arr2 = arr. map(function(item) {
        return item + 'a'   // 有效
    })
    console.log(arr2) // ['qa','wa','ea']
    
    // filter(): 返回满足条件的元素 结果是一个数组
    var arr = [1,2,3,4,5,6,7,8]
    var arr3 = arr.filter(function(item) {
        return item % 2 == 0; // 返回偶数   
    })
    // every():对数组的元素进行检测 是否都满足某个条件  都满足返回true  有一个不满足返回false
    var a = arr.every(function(item) {
        return item > 3   //判断数组中所有元素是否都大于3  
    })
    
    // some():对数组的元素进行检测  有一个满足返回ture   都不满足返回false 
    var arr = [1,2,3,4,5,6,7,8];
    var b = arr.some(function(item) {
        return item > 3   //判断数组中所有元素是否都大于3  
    });
    console.log(b)
    
    //  reduce() 
    var c = arr.reduce(function(total,cur) {
        return total + cur
    },3)
    // 求和,3是初始值,total是和  cur是当前值
    
    
    // 序列化
    var obj3 = {name: 'q', age: 12}
    // JSON.parse()  // json字符串转对象
    // JSON.stringify()  // 对象转字符串
    
    // 深,浅拷贝
    // 数组
    var arr = ['a','b','c']
    var arr1 = arr; // 浅拷贝
    arr1[1] = 100
    console.log(arr) // ['a',100,'c']
    
    var arr2 = arr.slice(0) // 或者使用arr.concat([])
    arr2[1] = 99
    console.log(arr) // ['a',100,'c']
    
    // 对象
    var obj = {
      name: 'abc',
      age:12,
      sub: {id: 2}
    }
    
    var obj1 = {
      sex: '男'
    }
    // 对象合并 浅拷贝
    Object.assign(obj,obj1);
    console.log(obj) // {name: "abc", age: 12, sex: "男"}
    
    // 深拷贝 不支持function
    var obj = {
      name: 'abc',
      age:12,
      sub: {id: 2}
    }
    var obj2 = JSON.parse(JSON.stringify(obj))
    obj.sub.id = 100
    console.log(obj) // name: "abc", age: 12, sub:{id: 100}}
    console.log(obj2) // name: "abc", age: 12, sub:{id: 2}}
    
    // 深拷贝方法
    function deep(dest, obj) {
      var o = dest
      for (var key in obj) {
        if (typeof obj[key] === 'object') {
          o[key] = (obj[key].constructor === Array) ? [] : {}
          deep(o[key],obj[key])
        } else {
            o[key] =  obj[key]
        }
      }
    return = o
    }
    // 深拷贝
    import _ from 'lodash'
    var obj = {id:1,name:{a:'abc'},fn:function(){}};
    var obj2 = _.cloneDeep(obj);
    obj2.name.a = 'obj2';
    console.log(obj,obj2)
    

    相关文章

      网友评论

          本文标题:JS对象属性

          本文链接:https://www.haomeiwen.com/subject/metnhltx.html