Es6 复阅(11)(部分是非es6的) --对象的扩展

19 篇文章 0 订阅

1.属性简洁表示

let obj = {like:11};
let obj2 = {obj};// //相当于以下的写法 let obj2 = {obj:obj}
console.log(obj2);// { obj: { like: 11 } }

个人理解,和解构的过程是相反的,解构:

	let {obj} = obj2;// let obj = obj2.obj

2.方法简写

let obj = {
	method(x){
		console.log(x)
	},
}

与以下的写法是相等的

let obj = {
	method:function(x){
		console.log(x)
	}
}

简写用于模块导出:

	//导出模块
	//简写用于函数的返回值
	function func1(){}
	function func2(){}
	function func3(){}
	function func4(){}
	module.exports = {
	  func1,
	  func2,
	  func3,
	  func4,
	}

导入:

	let obj = require('./testJS.js');// 对应 module.exports
	console.log(obj);
	/**
	*{ func1: [Function: func1],
	*  func2: [Function: func2],
	*  func3: [Function: func3],
	*  func4: [Function: func4] }
	*/

属性的赋值器(setter)和取值器(getter),事实上也是采用这种写法。

	let obj = {
	  _like:4,
	  get like(){
	    return this._like;
	  },
	  set like(value){
	    console.log(value)
	    this._like = value;
	  },
	}
	obj.like = 'dsfdsf';

简写的对象方法不能用作构造函数,会报错

	//一个未简写的函数 可以做构造函数
	let obj = {
	  like:function (){
	    console.log('obj - like')
	  },
	}
	new obj.like();// obj - like

	// 一个简写的函数
	let obj2 = {
	  like(){
	    console.log('obj2 - like')
	  },
	}
	new obj2.like();// 报错 TypeError: obj2.like is not a constructor
	
	//同样的,箭头函数也不能作为构造函数
	let obj3 = {
	  like:()=>{
	    console.log('arrow-like')
	  }
	}
	new obj3.like();// 报错 TypeError: obj2.like is not a constructor
	

3.属性名表达式

	// 方法一 (标识符)
	obj.foo = true;
	
	// 方法二  (属性名表达式)
	obj['a' + 'bc'] = 123;

用于定义对象:

	let name = 'diyName'+Math.floor(Math.random()*10)
	let obj = {
	  [name]:'不确定的函数名',
	  oth:'我是确定的'
	}
	console.log(obj)

运行效果:
在这里插入图片描述
用于定义方法名称:

	let name = 'diyName'+Math.floor(Math.random()*10)
	let obj2 = {
	  [name]:function(){
	    console.log("我现在的名字是"+name)
	  },
	}

运行效果:
在这里插入图片描述
注意,属性名表达式如果是一个对象,默认情况下会自动将对象转为字符串[object Object]

	let obj = {hehe:'11'}
	let obj2 = {
	  [obj]:'我还不知道我的属性名称'
	}
	console.log(obj2);//{ '[object Object]': '我还不知道我的属性名称' }

属性名表达式与简洁表示法,不能同时使用,会报错:
在这里插入图片描述
SyntaxError: Unexpected token }

输入的时候编辑器都已经提示有错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值