JS 包装类

简介: JS 包装类

正文


声明一点:JavaScript的原始值是没有任何的属性和方法的

那么问题来了,

var str = 'abc';
console.log(str.length);  // 3


刚不是才说,原始值没有属性和方法吗?那为什么能访问到 length 属性呢?

// console.log(str.length) 经历了什么过程呢?
// 1. 使用 new String(str) ,实例化一个 String 对象;(假设为 obj)
// 2. 这个实例化对象 obj 下面有个 length 属性,然后 obj.length 就能获取到对应的属性值 3;
// 3. 接着马上销毁 delete obj.length。


再来,

var str = 'abc';
str.len = 1;
console.log(str.len);  // undefined
// 相当于
var str = 'abc';
new String(str).len = 1;
console.log(new String(str).len);


  • 在第二行的 str.len = 1 里面,虽然给 String 的实例化对象的 len 属性赋值 1,但由于没有保存起来,所以,接着系统会马上给销毁掉 delete new String(str).len
  • 第三行里面,又是一个新的实例化对象,而该实例化对象里面并没有 len 属性(或方法),所以输出的是 undefined


所以呢,我们常见的 string.length 并不是我们表面看到的 string 变量有一个 length 属性,它没有。


原始值是不可能有属性和方法的,但 str.len = 1 不报错,为什么呢?因为经历了一个包装类。Boolean、String、Number 的原始值都可以加属性和方法,因为有包装类,但是 Null 和 Undefined 加属性和方法会报错(例外)。

目录
相关文章
|
JavaScript 前端开发 索引
JavaScript包装类(二)——String类
它们的区别是索引的方式没有找到会返回undefined,而charAt没有找到会返回空字符串;
147 0
JavaScript包装类(二)——String类
|
JavaScript 前端开发 安全
JavaScript包装类(一)
这是因为JavaScript为了可以使其可以获取属性和调用方法,对其封装了对应的包装类型;
143 0
JavaScript包装类(一)
|
JavaScript
js基础笔记学习194-包装类2
js基础笔记学习194-包装类2
63 0
js基础笔记学习194-包装类2
|
JavaScript
js基础笔记学习193-包装类1
js基础笔记学习193-包装类1
62 0
js基础笔记学习193-包装类1
|
JavaScript 前端开发 Java
【JavaScript】48_包装类与垃圾回收机制
# 10、包装类 在JS中,除了直接创建原始值外,也可以创建原始值的对象 通过 new String() 可以创建String类型的对象 通过 new Number() 可以创建Number类型的对象 通过 new Boolean() 可以创建Boolean类型的对象 - 但是千万不要这么做 包装类: ## JS中一共有5个包装类 String --> 字符串包装为String对象 Number --> 数值包装为Number对象 Boolean --> 布尔值包装为Boolean对象 BigInt --> 大整数包装为BigInt对象 Symbol --> 符号包装为
106 0
|
JavaScript
js辨别数据的类型(包装类)
js辨别数据的类型(包装类)
|
3月前
|
JavaScript 前端开发
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
49 1
JavaScript中的原型 保姆级文章一文搞懂
|
7月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
138 2
|
3月前
JS+CSS3文章内容背景黑白切换源码
JS+CSS3文章内容背景黑白切换源码是一款基于JS+CSS3制作的简单网页文章文字内容背景颜色黑白切换效果。
33 0
|
7月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
195 4

热门文章

最新文章