Object.assign的一些用法
或者在处理一些技术问题时,有什么不懂的地方,随时可以加我QQ:565449214讨论技术或者加QQ群62655404讨论
用法1:替换数组的值
let a = [1,2,3],b = [4,5]
console.log( Object.assign(a,b)); // 后面的值覆盖前面的值,[4,5,3]
用法2:为对象添加属性
下面是es5的写法:this.xxx =xxx
// es5的写法
class Test{
constructor(x,y){
this.x =x
this.y = y
}
sum(){
return this.x + this.y
}
}
let t = new Test(1,2)
console.log(t.sum());
用Object.assign的写法
// Object.assign的写法
class Test2{
constructor(x,y){
Object.assign(this,{x,y})
}
sum2(){
return this.x + this.y
}
}
let t2 = new Test2(1,2)
console.log(t2.sum2());
用法3 深度克隆对象
// 用法3 深度克隆对象
let clone = (orignObj) => {
let originProto = Object.getPrototypeOf(orignObj)
return Object.assign(Object.create(originProto), orignObj)
}
let obj3 = { name: 'zs', age: 12 }
console.log(clone(obj3));
用法4:合并对象属性
下面这种写法,合并后,原来的两个对象都已经改变
// example1
let obj = {name:'zs'} ,obj2 = {name:'zs',age:12}
let merge = (target, ...v) => Object.assign(target, ...v)
console.log(merge(obj,obj2));// {name:'zs',age:12}
console.log(obj,obj2); // 合并后,两个对象都已经改变,值都是 {name:'zs',age:12}
如果不想改变原来的对象,可以用下面这个写法
// example2 合并后,返回一个新对象,不更改原有对象的属性
let merge2 = (...v) => Object.assign({}, ...v)
console.log(merge2(obj, obj2));// {name:'zs',age:12}
console.log(obj); // 原来的对象保持原样 {name:'zs'}
console.log(obj2); // 原来的对象保持原样 {name:'zs',age:12}
//合并对象,还可以用展开操作符
let obj5 = {name:'zs'},obj6 = {age:12}
let newOjb = {...obj5,...obj6}
console.log(newOjb);
用法5.为默认对象新增属性
const DEFAULTS = { name: 'zs', age: 13 } // 默认对象
let createObjWithDefault = (opt) => Object.assign({}, DEFAULTS, opt)
console.log(createObjWithDefault({ 'addr': 'gz' }));
- 相关阅读
- ( 2021/2/20 23:10:50 )微信小程序直播组件tencentvideo(wxa75efa648b60994b)
- ( 2021/2/20 23:03:42 )微信小程序直播组件live-player-plugin(wx2b03c6e691cd7370)
- ( 2021/2/16 14:17:49 )jquery设置或获取修改classname
- ( 2021/2/7 22:49:17 )微信公众号用户关注时自动推送回复小程序卡片(图文卡片)不需要第三方平台就可以做
- ( 2021/2/7 22:47:57 )微信公众号用客服接口推送菜单消息
- ( 2021/2/7 22:44:44 )微信公众号回复图文消息或用客服接口推送图文消息
- ( 2021/2/7 22:43:03 )微信公众号回复音乐消息或用客服接口推送音乐消息
- ( 2021/2/7 22:41:05 )微信公众号回复视频消息或用客服接口推送视频消息
- 共有0条关于《Object.assign的一些用法》的评论
- 发表评论
您发布的评论即表示同意遵守以下条款:
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家、社会、集体和公民的合法权益;
二、不得发布国家法律、法规明令禁止的内容;互相尊重,对自己在本站的言论和行为负责;
三、本站对您所发布内容拥有处置权。
- 更多信息>>栏目类别选择
- uni-app
- rss学习
- 个人空间
- 网站设计
- 网站公告
- 下载
- photoshop学习
- ASP学习
- DIV+CSS学习
- SEO搜索引擎忧化
- java学习
- HTML学习
- 网站信息
- 网站类信息
- 更多>>同类信息
- jQuery设置提交表单disabled属性所有input、button、extarea、select、checkbox、radio都生效
- window.location.href跳转无反应不跳转解决
- window.location.href和setTimeout结合时间错误
- 各种钱货币字母转换对应的符号
- jquery实现移动端下拉加载刷新更多信息
- 删除程序页面代码中的注释标签
- 服务器iis配置.mp4视频格式播放(网页播放.mp4有声音但没有图像画面)
- jquery实现单选按钮radio选中和取消 使用prop()代替attr()
- 更多>>最新添加文章
- 微信小程序直播组件tencentvideo(wxa75efa648b60994b)
- 微信小程序直播组件live-player-plugin(wx2b03c6e691cd7370)
- jquery设置或获取修改classname
- 微信公众号用户关注时自动推送回复小程序卡片(图文卡片)不需要第三方平台就可以做
- 微信公众号用客服接口推送菜单消息
- 微信公众号回复图文消息或用客服接口推送图文消息
- 微信公众号回复音乐消息或用客服接口推送音乐消息
- 微信公众号回复视频消息或用客服接口推送视频消息
- 更多>>随机抽取信息
- 深山留言板 v7.0.1 bulid2014.11.15更新
- IE6.0, IE7.0和FireFox浏览器css样式兼容
- Javascript实现CSS代码高亮显示
- 鼠标放在表格区域内,当前格的一整行和一整列变色
- DIV+CSS奇怪问题之边界(margin)叠加
- JS自动格式化输入的数字/千位分隔符
- Asp加密解密函数
- 极酷的,漂亮的页面loading等待页面特效(2)