对象

作者: 帅帅哒小白 | 来源:发表于2019-12-15 12:55 被阅读0次

    [[Put]] 被触发时,实际的行为取决于许多因素,包括对象中是否已经存在这个属性(这是最重要的因素)

    如果存在这个属性,[[Put]] 算法会大致检查下面这些内容:

    1. 属性是佛是访问描述符?如果是并且存在 setter 就调用 setter。
    2. 属性的数据描述符中 writable 是否是 false?如果是,在非严格模式下静默失败,在严格模式下抛出 TypeError 异常。
    3. 如果都不是,将该值设置为属性的值。

    如果对象中不存在这个属性,[[put]] 操作会更加复杂。

    for...in 遍历的是对象中所有可枚举属性,你需要手动获取属性值

    属性的特性可以通过属性描述符来控制,比如 writable 和 configurable。此外,可以使用 Object.preventExtensions(...)、Object.seal(..) 和 Object.freeze(..) 来设置对象的不可变性级别。

    可以使用 ES6 中 for...of 来遍历数据结构(数组、对象,等等)中的值,for...of 会寻找或者自定义的 @@iterator 对象并调用它的 next() 方法来遍历数据值。

    相关文章

      网友评论

        本文标题:对象

        本文链接:https://www.haomeiwen.com/subject/gfmknctx.html