JavaScript - 字符串原语值(String Primitive)与字符串对象(String Object)



主要参考


String Primitive与String Object的直观区分

  • String Primitive包括:

    • 由引号包裹的字符串值,如"abc"

    • 转换函数String()返回的字符串值,如String("abc")

  • String Object包括:

    • 通过new操作符创建的String对象,如new String("abc")
  • 直观区别:类型不同

    typeof "abc"; // string
    typeof String("abc"); // string
    typeof new String("abc"); // object

应用区别

主要体现在作为eval()的参数值时,结果返回不同(当然慎用eval()

  • String Primitive将被作为源码执行:

    eval("2 + 2"); // number 4
  • String Object仅作为对象被传入后原样返回

    eval(new String("2 + 2")); // object String { "2 + 2" }

转换关系

  • String Primitive -> String Object

    当需要调用String对象的方法或执行属性查找时,JavaScript会自动将String Primitive转换为String Object,因此可直接调用相应方法:

    "abc".charAt(1); // b
  • String Object -> String Primitive

    • 通过转换方法String()转换:

      typeof String(new String("abc")); // string
    • 通过对象未被重载的valueOf()toString()方法

      typeof new String("abc").toString(); // string
      typeof new String("abc").valueOf(); // string

转载于:https://www.cnblogs.com/JustBeZero/p/9641145.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值