JavaScript中基本类型是如何进行属性和方法操作的

通常我们知道在JS中只有对象才有属性和方法的,比如:

var obj = {};
obj.name = "jackie";
console.log(obj.name);

那基本类型有没有属性和方法呢?

var num1 = 9527;
var num2 = 32.54879;
console.log(num1.toExponential(3));    // 9.527e+3  指数计数法
console.log(num2.toFixed(3));          // 32.549    四舍五入保留三位小数

var str = "jackie";
str.age = 12;
str.sex = "male";
console.log(str.split(""));           // ["j", "a", "c", "k", "i", "e"]
console.log(str.age);                 // undefined
console.log(str.sex);                 // undefined

以上代码说明,基本类型也可以像对象类型一样使用,包括对属性赋值和访问属性都是可操作的(即便是访问并没有什么卵用)。
那么有点小问题:不是说基本类型没有属性和方法吗? 那怎么Number还有toString(),toPrecision(),String还是有那些length, substring(), split()等等一大堆属性,方法呢?它们又是怎么操作和实现的呢?

答:这是为了方便大家对数字,字符串类型”对象”进行一些常见操作,所以有”好事者”在底层加入了一些专门针对Number,String,Boolean类型的优化, 可以理解为:当我们使用这些类型的方法时,JavaScript自动帮我们在”后台”加工了一下,就是new了一下这些类型,把它转换为引用类型供我们操作。
ex:

var string = "jackie";
var arr = string.split("");

JS在我们使用以上String方法时,自动在”后台”改为以下:

var string = new string("jackie");
var str = string.split("");
string = null;

又如:

var s = new String();
s.name = "Lau";
console.log(s.name);           //Lau

之所以可以这样使用基本类型,是因为JavaScript内部在处理我们进行的方法和属性操作时,JavaScript会在创建一个临时的包装类型供我们使用,这样子就可以像对象一样操作基本类型。但在每次操作完成后,JavaScript创建的临时对象就会销毁,当下次再对其进行操作和访问时,JavaScript会重新建立临时对象。

正是因为Number,String,Boolean具有这种特殊的特性,所以它们又被称为基本包装类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kirinlau

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值