JavaScript-内置对象和包装类型

作为JS面试题中经常被问到的考点,怎么能不好好了解+理解呢?或许标题中的名词我们不是很了解,但是我相信我们一定都实践过,而且不止一次,只不过当时我们或许停留在使用的层次,没有深入了解原理,在此之前的我也是这样的。不过学习知识,果真是“N+1”模式!

相信大家还记得C#中定义一个字符串 string s1="雨田";但是有些时候我们会见到String这个字符串的类;然后傻傻的分不清楚了;现在看来的话,应该是默认封装了一个String类,然后封装了针对此类的各种操作API函数,这也是为什么我们可以(s1.函数名(参数))的原因,不过C#这门语言中究竟是怎么使用的,我还真没去了解;不过自以为应该和JS(今天聊的)差不多,所以直接进入正题。


什么是内置对象呢?

定义:ES标准中规定的,浏览器厂商已经实现的对象(首字母大写);

包括:【String、Number、Boolean】、【Array、Date、Math、RegExp】、【Error】、【Function、Object】、【Global】;


               当然如果这样聊的话,确实没有深入挖掘的知识点,不过看“标题”-包装类型,这才是本篇博客的核心知识点


什么是包装类型?

定义:专门封装原始类型的值,并提供操作原始类型值的API;

PS:原始类型就是自定义的字符串、数字、True/False;

包括:【String、Number、Boolean】;

为什么:原始类型的值本身不具有任何功能;

何时发挥作用:试图对原始类型的值调用函数时,引擎会自动创建对应类型的包装类型对象

                       1:封装原始类型的值;2:调用包装类型中方法操作原始类型;


                                单靠理论性的文字说破天也不好明白,不妨写一个例子,咱们一块来了解下


var str="雨田";声明一个字符串类型

str.Height=183;//换做C#,一定不会点出这种方法,其实JS中也没有,不过确可以人为定义,当做属性使用;
//过程解析:
    //1:试图对原始类型的值调用任何函数时,也就是str.Height
    //2:判断原始类型的类型名,也就是type of str,也就是字符串类型
    //3:自动创建对象的字符串包装类型对象,其中保存要操作的原始类型的值
    //4:调用包装类型对象(String)中提前定义好的API,这里.Height不属于提前定义好的,所以默认在              String中添加.Height这个API;
    //5:API被调用后,包装类型String会自动释放,刚添加的.Height这个API也就一块走了;

console.log(str.Height);
//过程解析:
    //1:试图对原始类型的值调用任何函数时,也就是str.Height
    //2:判断原始类型的类型名,也就是type of str,也就是字符串类型
    //3:“重新”自动创建对象的字符串包装类型对象,其中保存要操作的原始类型的值
    //4:正因为String包装类型中不存在,所以输出“未定义”这个提示

//结果:
Underfined//表示未定义

//相信大家可能会和我一样以为输出10,但是不尽人意,那么该过程究竟做了一个什么事情呢?详见代码解析,简简单单三行代码竟然做了两次创建包装类型对象;

-------------------------------------------  然后咱们再来回顾,之前使用过的字符串转换为大写的函数-----------------------------------------

var unicode="YuTian".toUpperCase();
//代码解析
    //1:代码还原为var unicode=new String("YuTian").toUpperCase();
    //2:做完此函数操作后,然后赋值给Unicode,这里是格外注意的地方
    //3:(2)中的操作同样诠释了为什么针对字符串操作后,不改变原字符串的值,而需要重新进行赋值。

/*-------------------------------------------------------------------------------------*/

//既然说到这里,咱们一块来改改上面那个例子的代码吧!详细大家一定有了思路了
var str=new String("雨田");
//这里再创建完包类型后,将地址存放在str中,保证不会被回收;
str.height=183;
//过程见实例一的解析
console.lot(str.money);
//保存的是刚刚未被回收的包类型的Height这个API函数;

 以上就是本篇博客的核心知识点,浏览以及阅读的博友,记得留言、点赞、转发   一条龙吆!下篇博客更精彩........

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值