ES6 —— 新增方法【Object.defineProperty()】

简介: ES6 —— 新增方法【Object.defineProperty()】

一、数组方法

迭代(遍历)方法:forEach()、map()、filter()、some()、every()。

  1. forEach()
  array.forEach(function(currentValue, index, arr))
  1. currentValue:数组当前项的值
  2. index:数组当前项的索引
  3. arr:数组对象本身
  let arr = [1, 2, 3]
    let sum = 0
    arr.forEach(function(value, index, array){
        console.log('每个数组元素' + value)
        console.log('每个数组元素的索引号' + index)
        console.log('数组本身' + array)
        sum += value
    })
    console.log(sum)

05a410d35be14a808a087a6d8d167adf.png

2. filter():创建一个新的数组,新数组中的元素是通过检查指定数值中符合条件的所有元素,主要用于筛选数组。

  array.filter(function(currentValue, index, arr))
  1. currentValue:数组当前项的值
  2. index:数组当前项的索引
  3. arr:数组对象本身
  let arr = [1, 2, 3, 4, 5]
    let newArr = arr.filter(function(value, index){
        return value >= 3
    })
    console.log(newArr) //[3, 4, 5]
  1. some():检测数组中的元素是否满足指定条件。即查找数组中是否有满足条件的元素。
  array.some(function(currentValue, index, arr))
  1. 返回一个布尔值,如果查找到了这个元素,就返回 true,没有找到就返回 false。
  2. 如果找到了第一个满足条件的元素,则终止循环,不再继续查找。
  let arr = [1, 2, 3, 4, 5]
    let flag = arr.some(function(value){
        return value >= 3
    })
    console.log(flag) //true

二、Object.defineProperty()

  1. Object.defineProperty():用来定义新属性或修改原有的属性。
  Object.defineProperty(obj, prop, descriptor)

obj:必需。目标对象。

prop:必需。需定义或修改的属性的名字。

descriptor:必需。目标属性所拥有的特性。

第三个参数 descriptor 说明:以对象形式 {} 书写


value:设置属性的值,默认为 undefined

writable:值是否可以重写。true | false 默认为 false。

enumerable:目标属性是否可以被枚举。true | false 默认为 false。

configurable:目标属性是否可以被删除或是否可以再次修改特性。true | false 默认为 false。

  //原来对象添加和修改属性的方式
  let obj = {
        id: 1,
        pname: '小米',
        price: 1999
    }
    // 以前的对象添加和修改属性的方式
    obj.num = 1000
    obj.price = 999
    console.log(obj)

c050ac28021f46a9a89037e0a10feee8.png

  let obj = {
        id: 1,
        pname: '小米',
        price: 1999
    }
    // Object.defineProperty() 定义新属性或修改原有的属性
    Object.defineProperty(obj, 'num', {
        value: 1000,
        enumerable: true
    })
    console.log(obj)
    Object.defineProperty(obj, 'price', {
        value: 999
    })
    console.log(obj)
    Object.defineProperty(obj, 'id', {
        // 不允许修改这个属性值 默认值也为false
        writable: false
    })
    obj.id = 2
    console.log(obj)
    Object.defineProperty(obj, 'address', {
        value: '山东',
        // enumerable 如果为false 则不允许遍历 默认值为false
        enumerable: false,
        // configurable 如果为false 则不允许删除这个属性 默认为false
        configurable: false
    })
    console.log(obj)
    // address 设置了不可枚举 
    console.log(Object.keys(obj))
    // address 设置了不可删除
    delete obj.address
    console.log(obj)

051edd34023949e29fea2e551719de06.png

相关文章
|
2月前
|
JavaScript 前端开发
【面试题】 JS手写ES6的Object.create方法
【面试题】 JS手写ES6的Object.create方法
|
9月前
|
Java
【面试题精讲】Object类的常见方法有哪些?
【面试题精讲】Object类的常见方法有哪些?
|
2月前
|
设计模式 Java 调度
多案例理解Object的wait,notify,notifyAll与Thread的sleep,yield,join等方法
多案例理解Object的wait,notify,notifyAll与Thread的sleep,yield,join等方法
58 1
|
5天前
|
存储 JSON 前端开发
JavaScript 进阶征途:解锁Function奥秘,深掘Object方法精髓
JavaScript 进阶征途:解锁Function奥秘,深掘Object方法精髓
|
18天前
|
Java API
API:object当中的各种方法刨析(今日份:equals toString)
API:object当中的各种方法刨析(今日份:equals toString)
|
2月前
|
前端开发 JavaScript
前端 js 经典:Object 常用原生方法
前端 js 经典:Object 常用原生方法
64 2
|
24天前
|
Java API
JavaSE——常用API进阶一(1/3)-Object类(Object类的作用、Object类的常见方法-toString方法、equal方法、clone方法)
JavaSE——常用API进阶一(1/3)-Object类(Object类的作用、Object类的常见方法-toString方法、equal方法、clone方法)
15 0
|
2月前
|
存储 监控 开发工具
对象存储OSS产品常见问题之python sdk中的append_object方法支持追加上传xls文件如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
|
2月前
|
JavaScript
JS之Object.defineProperty方法
JS之Object.defineProperty方法
|
2月前
|
存储 JavaScript 前端开发
【JavaScript】<面向对象Object>函数方法&对象创建&原型对象&作用域解析
【1月更文挑战第17天】【JavaScript】<面向对象Object>函数方法&对象创建&原型对象&作用域解析