【JavaScript相关】有四个操作会忽略enumerable为false的属性(约118字)

有四个操作会忽略enumerable为false的属性

  • for...in循环:只遍历对象自身的和继承的可枚举的属性。
    var obj = {
      prop1: 'value1',
      prop2: 'value2'
    };
    
    Object.defineProperty(obj, 'prop3', {
      value: 'value3',
      enumerable: false
    });
    
    for (var key in obj) {
      console.log(key); // Output: prop1, prop2
    }
  • Object.keys():返回对象自身的所有可枚举的属性的键名。
    var obj = {
      prop1: 'value1',
      prop2: 'value2'
    };
    
    Object.defineProperty(obj, 'prop3', {
      value: 'value3',
      enumerable: false
    });
    
    var keys = Object.keys(obj);
    console.log(keys); // Output: ["prop1", "prop2"]
  • JSON.stringify():只串行化对象自身的可枚举的属性。
    var obj = {
      prop1: 'value1',
      prop2: 'value2'
    };
    
    Object.defineProperty(obj, 'prop3', {
      value: 'value3',
      enumerable: false
    });
    
    var json = JSON.stringify(obj);
    console.log(json); // Output: "{"prop1":"value1","prop2":"value2"}"
  • Object.assign(): 忽略enumerablefalse的属性,只拷贝对象自身的可枚举的属性。
    var source = {
      prop1: 'value1',
      prop2: 'value2'
    };
    
    Object.defineProperty(source, 'prop3', {
      value: 'value3',
      enumerable: false
    });
    
    var target = {};
    Object.assign(target, source);
    
    console.log(target); // Output: { prop1: 'value1', prop2: 'value2' }

在以上示例中,enumerable 属性为 false 的属性 prop3 在遍历、获取键名、序列化、拷贝等操作中都被忽略了。

THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容