- .assign
.assign可以用于js对象浅复制。语法: .assign(target, source1, source2);
第一个参数为目标对象,后面的为要合并的对象(源对象)。
例:
let obj={
a:2,
b:4
}
.assign({}, obj, {c:6}); // 将{c:6}与obj合并 返回{a:2,b:4,c:6}
当属性名相同时,新增的会覆盖原来的属性
let obj={
a:2,
b:4
}
.assign({}, obj, {b:6}); // 返回{a:2,b:6}
.assign只会拷贝对象本身的属性,不拷贝继承属性,不拷贝不可枚举对象。
.assign可以用来处理数组,但是会把数组视为对象。
.assign([1, 2, 3], [4, 5]) // [4, 5, 3]
上面代码中, .assign把数组视为属性名为 0 、 1 、 2 的对象,源数组的 0 下标属性4覆盖了目标数组的 0 下标属性1。
- vue视图刷新
vue不能检测对象属性的添加和删除(已创建的实例上动态添加和修改根级响应式属性),在官方文档中推荐使用vm.set方法
this.$set(this.some ,\'b\',2) //Vue.set(vm.some , \'b\', 2)
例:
let app = new Vue({ //已经创建的实例
el: \'#app\',
data () {
return {
name: \'zhangsan\' // 根级响应属性
}
}
})
app.age = \'lisi\' // 这个age不响应
这时就可以使用vm.set:
this.$set(this.data, \'age\', \'lisi\')
也可以使用 .assign() 或 _.extend()来添加新的属性,但是要创建一个新的对象。
this.data = .assign({}, this.data, { age:\'lisi\' }) //这里{} 就是创建的新的对象
Vue不能检测到通过索引和改变长度修改值的数组
例:
data () {
return {
newA: [5, 6, 7, 8, 9]
}
......
this.newA[4] = 4 //不能检测到更新
this.newA.length = 5 //不能检测到更新
这时可以使用vm.set:
this.$set(this.newA, 4, 8888888)
使用 .assign:
this.newA = .assign([], this.newA, this.newA[4] = 9999)
使用splice:
this.newA.splice(4, 1, 99999) //参数分别为:1.要删除/添加的下标,2.要删除的项数,0为不删除,3.要添加的值
改变原始数组的都可以用,比如该有push,得到新数据的可以通过赋值给一个新对象来改变,比如filter
继续阅读与本文标签相同的文章
下一篇 :
《算法技术手册》一3.6 常用方法
-
AI+5G科技创新 视频行业呈现轻应用化趋势
2026-05-14栏目: 教程
-
1.98亿滴滴用户添加了紧急联系人 每天百万个订单行程分享给亲友
2026-05-14栏目: 教程
-
工程院院士刘韵洁:5G前景很大,但主要是行业应用
2026-05-14栏目: 教程
-
陆奇:看好5G技术,但应用好5G还需要时间
2026-05-14栏目: 教程
-
在Visual Studio中使用clang-tidy进行代码分析
2026-05-14栏目: 教程
