es6中对象属性双方括号是什么意思

es6中对象属性双方括号是什么意思?

在react表单输入输入框的change事件中


handleChange = (e) => {

    console.log(e);

    this.setState({

      value: e.target.value

    });

}

这里的event对象是一个proxy对象,将其打印到控制台输出如下


[[Handler]] : Object

  set : ƒ (target, prop, value)

  __proto__ : Object

[[Target]] : SyntheticEvent

  bubbles : (...)

  cancelable : (...)

  currentTarget : (...)

  defaultPrevented : (...)

  dispatchConfig : null

  eventPhase : (...)

  isDefaultPrevented : null

  isPropagationStopped : null

  isTrusted : (...)

  nativeEvent : (...)

  target : (...)

  timeStamp : (...)

  type : (...)

  _dispatchInstances : null

  _dispatchListeners : null

  _targetInst : null

  preventDefault : (...)

  stopPropagation : (...)

  get bubbles : ƒ ()

  set bubbles : ƒ (val)

  get cancelable : ƒ ()

  set cancelable : ƒ (val)

  get currentTarget : ƒ ()

  set currentTarget : ƒ (val)

  get defaultPrevented : ƒ ()

  set defaultPrevented : ƒ (val)

  get eventPhase : ƒ ()

  set eventPhase : ƒ (val)

  get isTrusted : ƒ ()

  set isTrusted : ƒ (val)

  get nativeEvent : ƒ ()

  set nativeEvent : ƒ (val)

  get target : ƒ ()

  set target : ƒ (val)

  get timeStamp : ƒ ()

  set timeStamp : ƒ (val)

  get type : ƒ ()

  set type : ƒ (val)

  get preventDefault : ƒ ()

  set preventDefault : ƒ (val)

  get stopPropagation : ƒ ()

  set stopPropagation : ƒ (val)

  __proto__ : Object

[[IsRevoked]] : false



如果是函数对象又会有这样的结构


arguments : (...)

caller : (...)

length : 0

name : ""

prototype : {constructor: ƒ}

__proto__ : ƒ ()

[[FunctionLocation]] : emptyFunction.js:13

[[Scopes]] : Scopes[2]

那这个对象里的[[]](双方括号)属性命名是有什么意义?


拉丁的传说
浏览 1514回答 1
1回答

守着一只汪

双方括号代表这是JavaScript引擎内部使用的属性/方法,可以帮助debug(点一下[[FunctionLocation]]就能跳到定义,点一下[[Scopes]]就能查看闭包),但是正常JavaScript代码是取不到这些属性的。引擎看心情决定要显示哪些内部属性,显示的格式也没有规定,但在控制台里大家一般都约定俗成用双方括号,保持和规范的格式一致。ECMA 标准: Object Internal Methods and Internal Slots
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript