• AbyssKR
    2022-11-17 来自海南
    原始类型是不可改变的,下面的示例代码: var str = 'hello'; str.toUpperCase; // 应该是 str.toUpperCase();

    作者回复: 谢谢指正!已经修改了。

    
    
  • Silence
    2022-10-27 来自北京
    对象类型的图有问题,Symbol 没有构造函数,new 的话会报 Symbol is not a constructor

    作者回复: 图里没有new吧,Symbol也是一个constructor。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/Symbol。不过提醒大家用Symbol()的时候不要加new,这是一个好的点,值得注意,谢谢提出。

    
    
  • 英雄各有见
    2022-10-25 来自北京
    看过某位大佬的博客,定义undefined严格意义上要使用 void 0 好些,undefined不是关键字是window对象的一个属性,可以赋值的...

    作者回复: 这是很好的一个点,但是从ES5开始,window的undefined就不能赋值了。 如果要避免本地变量用undefined命名的话,可以用ESLint rule no-undefined来避免。 很多前端的minify工具也可以在优化时做到void 0。考虑到代码还是给其它程序员读的,建议可以用undefined,把void 0的转换交给优化工具来处理。

    共 4 条评论
    
  • Geek_003168
    2022-10-13 来自北京
    一般原始类型就很少用构造函数创建。 字面量创建的对象都是一次性的,创建同类的对象需要多次创建,自定义构造函数可以实现同类的只用定义一次就好了,降低了代码冗余度。
    
    1
  • 海马
    2023-02-22 来自北京
    函数声明式写法部分有笔误:function a = {}
    
    
  • Hello,Tomrrow
    2022-10-20 来自上海
    原始类型,我们通过更习惯使用功能字面量的形式来创建(除symbol外),主要是考虑到编码习惯;数组和对象,更多的使用的也是字面量形式,简洁清晰。
    
    
  • 天择
    2022-10-14 来自新加坡
    以对象为例,字面量的方式可以一次性初始化很多字段,包括复杂字段和函数,前提是要了解对象的定义和结构;而contructor则依赖定义时的参数,如果参数不够,则需要显式地通过赋值或者方法初始化。不过constructor的方式可以做一些额外的工作,能做的事情不局限于字段初始化,字面量的方式无能为力。
    
    