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)

在这里插入图片描述
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)
  1. obj:必需。目标对象。
  2. prop:必需。需定义或修改的属性的名字。
  3. descriptor:必需。目标属性所拥有的特性。

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

  1. value:设置属性的值,默认为 undefined
  2. writable:值是否可以重写。true | false 默认为 false。
  3. enumerable:目标属性是否可以被枚举。true | false 默认为 false。
  4. configurable:目标属性是否可以被删除或是否可以再次修改特性。true | false 默认为 false。
	//原来对象添加和修改属性的方式
	let obj = {
    
    
        id: 1,
        pname: '小米',
        price: 1999
    }
    // 以前的对象添加和修改属性的方式
    obj.num = 1000
    obj.price = 999
    console.log(obj)

在这里插入图片描述

	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)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45902692/article/details/124450959
今日推荐