代码之家  ›  专栏  ›  技术社区  ›  zer0Id0l

类似Javascript字符串数组的对象行为

  •  0
  • zer0Id0l  · 技术社区  · 5 年前

    Adding new value to string

    当我在Chrome开发控制台中运行上述代码时,我没有得到任何错误。但是当相同的代码通过 js 加载到网页时,我收到此异常- Cannot create property 'name' on string 'some string'

    有人能告诉我为什么在上述两种情况下有不同的行为吗?

    3 回复  |  直到 5 年前
        1
  •  3
  •   CertainPerformance    5 年前

    您的网页必须在严格模式下运行该代码段,在该模式下,指定字符串的属性将引发错误:

    'use strict';
    const str = 'foo';
    str.bar = 'bar';

    在“草率”模式下,它只会默默地失败:

    const str = 'foo';
    str.bar = 'bar';
        2
  •  0
  •   Adrian Brand    5 年前

    [3]是字符串中的第四个字符,[0]是第一个字符。

        3
  •  0
  •   obfish    5 年前

    让我们看看这个案子

    const a = "a"
    Object.isFrozen(a) // true
    const b = new String("b")
    Object.isFrozen(b) // false
    

    从这一部分,我们可以看到 String 对象不一定是冻结的。只有那些字符串文本被冻结(我认为这是因为它们在池中共享。如果它们没有被冻结,您可以在一个地方创建属性以影响其他地方的代码),但是,显式构造 一串 对象独立于池,因此不会冻结。