携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第9天,点击查看活动详情
大家好!我是前端爬楼工程师🚹,一个野生程序员。好奇新技术,仰慕牛大佬。如果喜欢我的文章,可以关注➕点赞,为我注入能量,与我一同成长吧~
Javascript有很多内建函数,也叫原生函数。 如:String() , Number(), Boolean(), Array(),Function()等等。
new String('a')和'a'的类型是不一样的,前者是object类型,后者是string类型。
内置属性[[Class]]
数据类型为object的对象都会包含内部属性[[Class]], 属性不能直接访问,但是我们可以通过Object.prototype.toString.call()来得到它的值。
特殊的值
Null和Undefined
封装对象的包装
一般我们在使用基本类型时,他们是如何有.length和toString()这样的属性和方法的呢?他们是引擎自动为基本类型包装了一个封装对象。我们没必要在使用.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对象,他们的对象其实很有意思的。
我们来看看数组,函数,正则,字符串分别是什么样的?
Function的原型是一个空函数,数组的原型是一个数组形式的,字符串是一个空字符串,正则式一个空的正则表达式
对于未赋值的变量,我们可以将对应的原型对象作为默认值;这样的好处是每次调用已被创建并且只创建一次。
结语:以上就是原生函数的所有内容。