提高开发效率的JavaScript技术(一)

111 阅读2分钟

「这是我参与2022首次更文挑战的第9天,活动详情查看:2022首次更文挑战」。

Object.values()

Object.values()返回一个新数组,里面的成员是传入的参数对象自身的(不含继承的)所有可遍历属性对应的值

    let obj = {
      name: "lmw",
      age: 20,
      like: "sport"
    };
    console.log(Object.values(obj));   // [ 'lmw', 20, 'sport' ]

Object.entries()

Object.entries()方法返回一个新数组,里面的成员是传入的参数对象自身的(不含继承的)所有可遍历属性的键值对数组

    let obj = {
      name: "lmw",
      age: 20,
      like: "sport"
    };
    console.log(Object.entries(obj));   // [ [ 'name', 'lmw' ], [ 'age', 20 ], [ 'like', 'sport' ] 

扩展:Object.keys() 方法返回一个新数组,里面的成员是传入的参数对象自身的(不含继承的)所有可遍历的属性

let obj = {
  name: "lmw",
  age: 20,
  like: "sport"
};
console.log(Object.keys(obj));   // [ 'name', 'age', 'like' ]
 
// 注意:如果传入的参数是数组,则返回的是所有可遍历的索引。

Object.getOwnPropertyDescriptors()

Object.getOwnPropertyDescriptors()方法用来获取传入对象的所有自身属性的描述符

    let obj = {
      name: "lmw",
      age: 20,
      like: "music"
    };
    let desc = Object.getOwnPropertyDescriptors(obj);
    console.log(desc);

    // 打印结果
    {
      name: {
        value: 'lmw',   // value表示当前对象的默认值
        writable: true,   // writable表示对象属性是否可以修改
        enumerable: true,   // enumerable表示当前这个属性是否可以出现在对象的枚举属性中
        configurable: true   // 表示当前对象的属性能否用delete删除
      },
      age: { 
       value: 20, 
       writable: true,
       enumerable: true, 
       configurable: true 
      },
      like: {
       value: 'music', 
       writable: true,
       enumerable: true, 
       configurable: true 
      }
    }

我们可以使用Object.defineProperty() 修改属性

    let obj = {};
    Object.defineProperty(obj, "name", {
      value: "lmw",
      writable: false,   // 设置为false,该属性无法修改
      configurable: false,   // 设置为false,该属性不支持delete删除
      enumerable: false,   // 设置为false,该属性不可被枚举
    });

验证

console.log(obj);   // { name: 'lmw' }
 
obj.name = "lion";
console.log(obj);   // { name: 'lmw' }
 
delete obj.name
console.log(obj);   // { name: 'lmw' }
 
for (let key in obj) {
  console.log(key);   // ""
}

String.prototype.padStart

把指定字符串填充到字符串头部,返回新字符串

'abc'.padStart(10);   // "       abc",填充默认值""
 
'abc'.padStart(10, "*");   // "*******abc"
 
'abc'.padStart(6,"123465");   // "123abc"
 
'abc'.padStart(1);   // "abc"

String.prototype.padEnd

把指定字符串填充到字符串尾部,返回新字符串。

'abc'.padEnd(10);   // "abc       ",填充默认值""
 
'abc'.padEnd(10, "*");   // "abc*******"
 
'abc'.padEnd(6, "123456");   // "abc123"
 
'abc'.padEnd(1);   // "abc"