gpt4 book ai didi

javascript - JavaScript 中对象的 "internal slot"是什么?

转载 作者:行者123 更新时间:2023-12-03 08:25:10 25 4
gpt4 key购买 nike

我试图在某一点上理解 ECMAScript 2015 规范:Internal Slots of Objects .但是这部分对我来说似乎很不清楚,尤其是这句话:

Internal slots correspond to internal state that is associated with objects and used by various ECMAScript specification algorithms.



(它使用正确的语法吗?)有人可以用英语解释这个概念吗?

到目前为止我能理解的:
  • 内部插槽不是属性
  • 内部槽在创建对象期间使用,但不添加到对象本身
  • 内部插槽是或​​有值,最初是 undefined
  • 最佳答案

    概括

    内部槽/方法是规范用来定义所需行为的伪属性/方法。 (“抽象操作”是规范的相关机制。)槽表示状态(值),方法描述算法(行为)。它们可能对应于引擎使用的对象的属性,也可能不对应,但它们对用户代码不可用,除非由公共(public) API 的某些部分公开。引擎使用的实际实现可能与内部方法的草图有很大不同,但要符合要求,它们必须产生与内部方法一致的行为或结果。

    例子
    [[StringData]]内部插槽
    String 的行为,例如new String("whatever") , 用包含 [[StringData]] 的术语进行描述表示值的内部槽(在本例中为 whatever)。用户代码不能直接访问内部插槽,但 String.prototype.toString() (例如 (new String("whatever")).toString() )根据 thisStringValue() 定义抽象操作,用返回[[StringData]]的值来描述.换句话说,String.prototype.toString()是公共(public) API,本质上是一个公开 [[StringData]] 的 getter .
    [[OwnPropertyKeys]]内部方法

    Object.keys() 的行为描述的术语包括调用 [[OwnPropertyKeys]]内部方法。请注意,不同种类的对象,例如普通对象(例如 Object )和奇异对象(例如 String )可能对 [[OwnPropertyKeys]] 有不同的定义。 .当[[OwnPropertyKeys]]在规范中被“称为”,指的是适用类型的定义。还有一些invariant适用于任何对象类型的定义的特征。

    关于javascript - JavaScript 中对象的 "internal slot"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33075262/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com