第3章 原生函数
第 1 章和第 2 章曾提到 JavaScript 的内建函数(built-in function),也叫原生函数(native function),如 String 和 Number 。本章将详细介绍它们。
常用的原生函数有:
· String()
· Number()
· Boolean()
· Array()
· Object()
· Function()
· RegExp()
· Date()
· Error()
· Symbol() ——ES6 中新加入的!
实际上,它们就是内建函数。
熟悉 Java 语言的人会发现,JavaScript 中的 String() 和 Java 中的字符串构造函数 String(..) 非常相似,可以这样来用:
var s = new String( "Hello World!" ); console.log( s.toString() ); // "Hello World!"
原生函数可以被当作构造函数来使用,但其构造出来的对象可能会和我们设想的有所出入:
var a = new String( "abc" ); typeof a; // 是"object",不是"String" a instanceof String; // true Object.prototype.toString.call( a ); // "[object String]"
通过构造函数(如 new String("abc") )创建出来的是封装了基本类型值(如 "abc" )的封装对象。
请注意:typeof 在这里返回的是对象类型的子类型。
可以这样来查看封装对象:
console.log( a );
由于不同浏览器在开发控制台中显示对象的方式不同(对象序列化 , object serialization),所以上面的输出结果也不尽相同。
在本书写作期间,Chrome 的最新版本是这样显示的:String {0: "a", 1: "b", 2: "c", length: 3, [[PrimitiveValue]]: "abc"} ,而老版本这样显示:String {0: "a", 1: "b", 2: "c"} 。最新版本的 Firefox 这样显示:String ["a","b","c"] ;老版本这样显示:"abc" ,并且可以点击打开对象查看器。这些输出结果随着浏览器的演进不断变化,也带给人们不同的体验。
再次强调,new String("abc") 创建的是字符串 "abc" 的封装对象,而非基本类型值 "abc" 。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论