字符串函数对象String

269 阅读2分钟

这是我参与11月更文挑战的第15天,活动详情查看:2021最后一次更文挑战

前言

ECMAScript 6.0 简称ES6 , 是 JavaScript 语言的新一代的标准,于在 2015 年 6 月发布,正式名称就是《ECMAScript 2015 标准》。一般情况,泛指, 5.1版以后的标准,涵盖了 ES2015、ES2016、ES2017、ES2018、ES2019、ES2020、ES2021 等等

我们一起来学习 字符串函数对象String吧。

平时使用

我们平时都是习惯直接申明, 其实可以String(txt)或者new String(txt)形式调用。

var text = "我们都是好朋友""我们都是好朋友" == String("我们都是好朋友") // true
text == String(text) // true

ES6之后,又多了一种形式:

var text = `我们都是好朋友`

String的一些信息

JavaScript的代码中的String本身是一个函数:

typeof String // 'function'

StringFunction实例,Function 又是 Object的实例,所以:

String instanceof  Function // true

Function instanceof Object // true

String instanceof  Object  // true

所以 String 本身,既有Function也有Object原生上的属性。

这里额外再来一个小插曲:

Function instanceof Object // true
Object instanceof Function // true

纳尼,这什么花样,别着急,我们会在之后的原型篇详细解答。

Object原型上标志性的方法

  • Object.prototype.hasOwnProperty
  • Object.prototype.isPrototypeOf
  • Object.prototype.toString
  • Object.prototype.valueOf

image.png

Function原型上标志性的方法

  • Function.prototype.apply
  • Function.prototype.bind
  • Function.prototype.call
  • Function.prototype.length
  • Function.prototype.name

image.png

String既然是StringObject的实例,那么这么方法均有

image.png

String的静态属性

String的各种属性和方法可以参见 String JavScript | MDN。 我们首先一起来看看String的静态方法和属性, 其中红色的是ES6新增。 也就是:

  • String.fromCodePoint
  • String.raw

从下面的列表可以看出, String自身具备的方法很少,这里抛开自身原型上String.prototype的方法, 也就是:

  • String.fromCharCode
  • String.fromCodePoint
  • String.raw

静态方法

  • String.fromCharCode
    自有方法。 由指定的 UTF-16 代码单元序列创建的字符串。 简单说,就是Unicode的码点。 码点低于0xFFFF的字符能正确解析,大于的就会错乱了,先一起看看例子。

    console.log(String.fromCharCode(66, 67, 68, 69)) // BCED
    
    console.log(String.fromCharCode(20013,22269, 20154)) // 中国人
    
    String.fromCharCode(0x21154) // 'ᅔ'
    String.fromCharCode(0x1154) // 'ᅔ'
    
    String.fromCodePoint(0x21154) //  '𡅔'
    

    这里,你会发现,码点大于0xFFFF之后,0x211540x1154值相等。这么看来,就是直取了后四位,超过的直接被丢弃了。

  • String.fromCodePoint
    自有方法。 之后重点介绍

  • String.raw
    自有方法。 之后重点介绍

  • String.apply
    继承自Function

  • String.bind
    继承自Function

  • String.call
    继承自Function

  • String.constructor
    继承自Object

  • String.toString
    继承自Object

  • String.hasOwnProperty
    继承自Object

  • String.isPrototypeOf
    继承自Object

  • String.propertyIsEnumerable
    继承自Object

  • String.toLocaleString
    继承自Object

  • String.valueOf
    继承自Object

静态属性

  • String.length
    继承自Function。String方法的参数长度,值为1。
    String.length // 1
    
    new String("string") // String {'string'}
    
  • String.name
    继承自Function。String方法名,当然也就是String
    String.name // "String"
    
  • String.prototype
    继承自Function

小结

各位客官,今天你收获了吗?