美文网首页
【03】包装对象

【03】包装对象

作者: 吃码小妖 | 来源:发表于2019-12-16 13:21 被阅读0次

【03】包装对象

【01】字符串具有属性和方法:

let s = "hello world!";                               // 一个字符串
let word = s.substring(s.indexOf(" ")+1, s.length);   //使用字符串的属性

字符串不是对象,为什么会有属性?

因为引用字符串的属性时,JS会将字符串值通过调用new String()的方式转换成对象,这个对象继承了字符串的方法,并被用来处理属性的引用。

一旦属性引用结束,这个新创建的对象就会被销毁(其实在实现上并不一定创建或销毁这个临时对象,然而整个过程看起来是这样的)。

【02】同字符串一样,数字和布尔值也具有各自的方法:

通过Number()和Boolean()构造函数创建一个临时对象,这些方法的调用均是来自于这个临时对象(包装对象)。

null和undefined没有包装对象:访问它们的属性会报一个类型错误。

【03】代码:

let s = "test"; //创建一个字符串
s.len = 4;      // 给它设置一个属性
let t = s.len;  // 查询这个属性

当运行这段代码时,t的值是undefined。

第二行代码创建一个临时字符串对象,并给其len属性赋值为4,随即销毁这个对象。

第三行通过原始的(没有被修改过)字符串值创建一个新字符串对象,尝试读取其len属性,这个属性自然不存在,表达式求值结果为undefined。

这段代码说明了在读取字符串、数字和布尔值的属性值(或方法)的时候,表现的像对象一样。

但是,给字面量字符串设置属性时,会忽略这个操作:修改只是发生在临时对象身上,而这个临时对象并不会保留下来。

读取字符串、数字或布尔值的属性时创建的临时对象称做包装对象,它只是偶尔用来区分字符串值和字符串对象、数字和数值对象以及布尔值和布尔对象。

通常,包装对象只是被看做是一种实现细节,而不用特别关注。

由于字符串、数字和布尔值的属性都是只读的,并且不能给它们定义新属性,因此你需要明白它们是有别于对象的。

【04】需要注意的是,可通过String(),Number()或Boolean()构造函数来显式创建包装对象:

let s = "test", n = 1, b = true;// 一个字符串、数字和布尔值
let S = new String(s);          // 一个字符串对象
let N = new Number(n);          // 一个数值对象
let B = new Boolean(b);         // 一个布尔对象

JS会在必要时将包装对象转换成原始值,因此上段代码中的对象S、N和B常常——但不总是——表现的和值s、n和b一样。

“==”等于运算符将原始值和其包装对象视为相等,但“===”全等运算符将它们视为不等。

通过typeof运算符可以看到原始值和其包装对象的不同。

相关文章

  • 【03】包装对象

    【03】包装对象 【01】字符串具有属性和方法: 字符串不是对象,为什么会有属性? 因为引用字符串的属性时,JS会...

  • 包装对象

    包装对象 基本概念 所谓“包装对象”,就是分别与数值、字符串、布尔值相对应的Number、String、Boole...

  • 包装对象

    一个最基本的面向对象写法: function Aaa(){ //创建一个构造函数this.na...

  • 包装对象

    1.包装对象的定义 有人说,JavaScript 语言“一切皆对象”。这是因为数组和函数本质上都是对象,就连三种原...

  • 包装对象

  • 包装对象

    当我们的值类型需要操作属性的时候,就要借助包装对象 对象.属性只有对象才能设置,值类型设置属性的时候,每次都会创建...

  • 08 js03 对象、包装类

    1、对象:【对象的属性和方法,方法存在的形式:属性为方法名/引用;属性值为函数体,对象的属性值可以是任何类型,原型...

  • 9.adding OO-style object wrappin

    添加面向对象风格——包装对象 添加链式调用,每次执行会返回一个新的包装对象

  • JAVA / Android 设计模式之适配器(Adapter)

    简介 定义 适配器模式,即定义一个包装类,用于包装不兼容接口的对象 包装类 = 适配器Adapter; 被包装对象...

  • 对象、包装类

    对象 1、用已学的知识来描述一下对象: 2、属性的增、删、改、查 对象的属性,没定义就访问时不会报错,会返回und...

网友评论

      本文标题:【03】包装对象

      本文链接:https://www.haomeiwen.com/subject/zehknctx.html