【问题标题】:Difference between string primitive and string wrapper object in Javascript [duplicate]Javascript中字符串原语和字符串包装对象之间的区别[重复]
【发布时间】:2015-09-08 04:06:09
【问题描述】:

我很困惑wrapper objects for primitives 是什么。例如,字符串原语和使用字符串包装对象创建的字符串。

var a = "aaaa";
var b = new String("bbbb");
console.log(a.toUpperCase()); // AAAA
console.log(b.toUpperCase()); // BBBB
console.log(typeof a);        // string
console.log(typeof b);        // object

两者都可以访问String.prototype 方法,并且看起来就像字符串文字一样。但是一个不是字符串,它是一个对象。 ab 之间的实际区别是什么?为什么要使用new String() 创建字符串?

【问题讨论】:

  • 实际上没有真正的用例。实际的区别在于字符串包装器充当对象(例如可以有自己的属性)。

标签: javascript string primitive string-literals


【解决方案1】:

原始字符串不是对象。对象字符串就是对象。

基本上,这意味着:

  • 对象字符串是通过引用来比较的,而不是它们包含的字符串

    "aaa" === "aaa";                         // true
    new String("aaa") === new String("aaa"); // false
    
  • 对象字符串可以存储属性。

    function addProperty(o) {
      o.foo = 'bar'; // Set a property
      return o.foo;  // Retrieve the value
    }
    addProperty("aaa");             // undefined
    addProperty(new String("aaa")); // "bar"
    

【讨论】:

    猜你喜欢
    • 2011-03-18
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多