Javascript的原生函数

45 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第9天,点击查看活动详情

大家好!我是前端爬楼工程师🚹,一个野生程序员。好奇新技术,仰慕牛大佬。如果喜欢我的文章,可以关注➕点赞,为我注入能量,与我一同成长吧~


Javascript有很多内建函数,也叫原生函数。 如:String() , Number(), Boolean(), Array(),Function()等等。

new String('a')'a'的类型是不一样的,前者是object类型,后者是string类型。

内置属性[[Class]]

数据类型为object的对象都会包含内部属性[[Class]], 属性不能直接访问,但是我们可以通过Object.prototype.toString.call()来得到它的值。

特殊的值 NullUndefined

封装对象的包装

一般我们在使用基本类型时,他们是如何有.lengthtoString()这样的属性和方法的呢?他们是引擎自动为基本类型包装了一个封装对象。我们没必要在使用.length等属性和方法之前就创建一个封装对象,因为引擎已经做了这些优化。

new Boolean(false) 它得到的是个真值,这里值得注意一下。

拆封

如果我们想得到封装对象的基本类型,可以使用valueOf()函数;

var a = new String('abc')
typeof a.valueOf() // 'string'
// 隐式拆封
typeof ("" + a) // 'string'

构造函数

除了通过常量的形式来创建对象之外,还能通过构造函数来创建。但是构造函数这种方式是会有意想不到的效果;

比如:

var a = Array(3)
var b = new Array(1,2)
  • 如果传入一个参数得到的是一个长度为3的空数组
  • 如果传入两个参数得到的是一个长度为2,并且有元素的数组, [1,2]

所以说还是常量的形式看起来直接,简单不容易出错。 var a = [1,2]

原生原型

原生构造函数有自己的.prototype对象,他们的对象其实很有意思的。 我们来看看数组,函数,正则,字符串分别是什么样的? image.png Function的原型是一个空函数,数组的原型是一个数组形式的,字符串是一个空字符串,正则式一个空的正则表达式

对于未赋值的变量,我们可以将对应的原型对象作为默认值;这样的好处是每次调用已被创建并且只创建一次。


结语:以上就是原生函数的所有内容。