首页 > Web开发 > 详细

JS包装类

时间:2021-09-02 00:16:47      阅读:24      评论:0      收藏:0      [点我收藏+]

new String()
new Boolean()
new Number()

1. 概述

为了便于操作基本类型值,ECMAScript 提供了 3 个特殊的引用类型:Boolean、Number和 String。这些类型与其他引用类型相似,但同时也具有与各自的基本类型相应的特殊行为。实际上,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而能够调用一些方法来操作这些数据。

  • 基本类型:Undefined, Null, Boolean, Number, String
  • 引用类型:Object, Array, Date, RegExp (其实就是对象)

2. 怎么产生的?

eg :

var a = "abc"
console.log(a.length) //3

? JS中只有对象才有属性和方法,原始值没有属性和方法那么上面求字符串的长度 用length属性不是没有问题吗?

? 这是因为js中提供了三种特殊的引用类型(String Number Boolean)每当我们给原始值赋属性值时 后台都会给我们偷偷转换 调用包装类,实际走了下面的包装过程?

var a = "abc"
var b = a.length //触发包装类 new String("abc")
console.log(a) //
console.log(b)

var a = "abc"
var s1 = new String("abc")//创建出一个和基本类型值相同的对象
var b = s1.length //对象原型上包含length属性
s1 = null //s1置null并销毁当前实例,再次打印a依然是字符串而不是对象

3. 怎么进行“包装”的?

<script>
 var a = "abc"
 var b = a.substring(2) 
 console.log(b) //abc,还是字符串
 console.log(b)

 1.var s1 = new String("abc")
 2.var b = s1.substring(2)
 3.s1 = null ,并销毁当前实例

</script>
var s1 = "abc"
s1.color = "red"
console.log(s1.color) //underfined

var s2 = String("abc")
s2.color = "red"
console.log(s2.color) //underfined

var s3 = new String("abc")
s3.color = "red"
console.log(s3.color) //red

console.log(s1===s2) //true
console.log(s1==s3) //true
console.log(s1===s3) //false,创建出的是一个和基本类型值相同的对象

JS包装类

原文:https://www.cnblogs.com/dingdc/p/15213369.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!