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

相关文章
|
7月前
|
设计模式 Java 调度
多案例理解Object的wait,notify,notifyAll与Thread的sleep,yield,join等方法
多案例理解Object的wait,notify,notifyAll与Thread的sleep,yield,join等方法
86 1
|
24天前
|
JavaScript 前端开发
`Object.create()` 方法的参数
【10月更文挑战第29天】`Object.create()` 方法的参数提供了多种创建对象和控制对象属性及继承关系的方式,开发人员可以根据具体的需求灵活运用,以实现更高效、更符合设计要求的对象创建和继承机制。
|
22天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
76 4
|
23天前
|
设计模式
在实际开发中,什么时候应该使用 `new` 关键字,什么时候应该使用 `Object.create()` 方法?
【10月更文挑战第29天】`new` 关键字适用于创建具有特定类型和初始化逻辑的对象实例,以及实现基于原型链的继承;而 `Object.create()` 方法则适用于基于现有对象创建相似对象、避免构造函数的副作用、创建具有特定原型链的对象等场景。在实际开发中,需要根据具体的需求和设计模式来选择合适的方法来创建对象,以实现更高效、更灵活的代码结构。
|
3月前
ES6中map对象的使用,确实比Object好使哈
ES6中Map对象的使用优势,包括任意类型作为键、直接获取大小、增删查改操作等。Map的键可以是函数、对象、NaN等,支持forEach循环和for...of循环。
32 1
ES6中map对象的使用,确实比Object好使哈
|
2月前
|
存储 数据采集 数据处理
Pandas中批量转换object至float的高效方法
在数据分析中,常需将Pandas DataFrame中的object类型列转换为float类型以进行数值计算。本文介绍如何使用`pd.to_numeric`函数高效转换,并处理非数字值,包括用0或平均值填充NaN值的方法。
59 1
|
2月前
|
Java 索引
Object有哪些常用方法
掌握这些方法不仅能够帮助你编写出更加健壮和高效的Java代码,还能加深对面向对象编程概念的理解。在实际开发中,合理利用 `Object`类提供的方法能够有效提升代码的可读性、可维护性和性能。
46 0
|
2月前
|
JavaScript 前端开发 大数据
在JavaScript中,Object.assign()方法或展开语法(...)来合并对象,Object.freeze()方法来冻结对象,防止对象被修改
在JavaScript中,Object.assign()方法或展开语法(...)来合并对象,Object.freeze()方法来冻结对象,防止对象被修改
28 0
|
4月前
|
Java
【Java基础面试二十】、介绍一下Object类中的方法
这篇文章介绍了Java中Object类的常用方法,包括`getClass()`、`equals()`、`hashCode()`、`toString()`、`wait()`、`notify()`、`notifyAll()`和`clone()`,并提到了不推荐使用的`finalize()`方法。
【Java基础面试二十】、介绍一下Object类中的方法
|
4月前
|
数据安全/隐私保护
作用域通信对象:session用户在登录时通过`void setAttribute(String name,Object value)`方法设置用户名和密码。点击登录按钮后,跳转到另外一个页面显示用户
该博客文章通过示例演示了如何使用session对象的`setAttribute`和`getAttribute`方法在不同页面间传递和显示用户的用户名和密码信息,并说明了如何设置会话的有效期。
作用域通信对象:session用户在登录时通过`void setAttribute(String name,Object value)`方法设置用户名和密码。点击登录按钮后,跳转到另外一个页面显示用户