ES6-8 - 函数名/对象拓展、描述符、getter/setter

本文介绍了ES6中函数名的特殊性,包括bind方法创造的函数和Function构造函数。接着讲解了对象方法的简写、属性名表达式以及属性描述符的详细概念,如value、writable、get、set、configurable和enumerable。还探讨了getter和setter在对象上的使用,包括如何通过Object.defineProperties添加和注意事项。最后,讨论了getter/setter作为伪属性与Object.defineProperty的区别。
摘要由CSDN通过智能技术生成

函数名

有两种特殊情况:bind方法创造的函数,name属性返回bound加上原函数的名字;Function构造函数创造的函数,name属性返回anonymous。

  • bind函数名
// 以bound开头
function foo() {
    }
const fnName = foo.bind().name
console.log(fnName) // bound foo
  • getter setter

如果对象的方法使用了取值函数(getter)和存值函数(setter),则name属性不是在该方法上面,而是该方法的属性的描述对象的get和set属性上面,返回值是方法名前加上get和set。

const obj = {
   
  get foo() {
   },
  set foo(x) {
   }
};

obj.foo.name
// TypeError: Cannot read property 'name' of undefined

const descriptor = Object.getOwnPropertyDescriptor(obj, 'foo');

descriptor.get.name // "get foo"
descriptor.set.name // "set foo"

对象方法的简写

const o = {
   
  method() {
   
    return "Hello!";
  }
};
  • node common.js写法+
    在这里插入图片描述

在这里插入图片描述

属性名表达式

ES6 允许字面量定义对象时,用方法二(表达式)作为对象的属性名,即把表达式放在方括号内。

let propKey = 'foo';

let obj = {
   
  [propKey]: true,
  ['a' + 'bc']: 123
};
let obj = {
   
  ['h' + 'ello']() 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值