关于...this
来源:3-8 表单常见属性解析
 
			Daniyar
2019-12-10
老师,您好!
const newRule = [
          ...this.rules.user,
          { validator: userValidator, trigger: 'change' }
        ]
        this.rules = Object.assign({}, this.rules, { user: newRule })
      }
在这段代码中的“…this”是什么意思?为什么要这样写呢?
写回答
	1回答
- 
				
				你好,这里的 ...this 是扩展运算符,它会依次将 this.rules.user 数组中的所有属性全部展开,并依次加入数组中,生成一个新的数组,看下面一个例子: var obj = [{ a: 1 }, { b: 2 }]; var newObj = [...obj, { c: 3 }];newObj 的值如下: 0: {a: 1} 1: {b: 2} 2: {c: 3}由此可见这段代码的用途是将 obj 数组和 { c: 3} 这个对象合并生成一个新的数组。这样的好处如下: 1、代码非常简洁,如果不用扩展运算符,我们需要这样写: var newObj = [].concat(obj, {c: 3});或者 var newObj = []; obj.forEach(item => newObj.push(item)); newObj.push({ c: 3 });对比下来,扩展运算符写法最简洁,最容易理解 2、使用扩展运算符生成的对象会自动执行浅拷贝,这个是非常重要的特性,看下面的例子: var obj = [{ a: 1 }, { b: 2 }]; var newObj = [...obj]; obj === newObj //false即使原封不动的拷贝数组的值,newObj 也不等于 obj! 122019-12-11
相似问题
