js基本类型的包装对象

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
var test = "test";
test.a = "hello";
console.log(test.a);

在JavaScript中,“一切皆对象”,数组和函数本质上都是对象,就连三种原始类型的值——数值、字符串、布尔值——在一定条件下,也会自动转为对象,也就是原始类型的“包装对象”。

一般来说,只有对象是可以对属性进行读写操作的。但是平时我们用得很多的字符串方法和属性,都是直接通过”.”操作符访问的。比如:

console.log("hello world".length);
console.log("this a string".indexOf("a"));

​其实,在我们调用这些方法和属性时,JS内部已经隐式地帮我们帮创建了一个包装对象了,以上的实际的情形应该是这样的:

console.log(new String("hello world").length);
console.log(new String("this a string").indexOf("a"));

但是两者还是有区别的,

区别1:
浏览器自己隐式创建的包装对象和你显式创建的包装对象不严格相等。简单来说,虽然说表面JS对亲生的与领养的一样,但实际上,亲生的不等于领养的。

区别2:
隐式创建的包装对象,在使用完后之后就会被抛弃了。简单来说就是,一个大大的负心汉,上完我,就抛弃,还重新去找其他对象。
拿我们开头的那道题来说:
test.a = "hello";
这里隐式创建了一个包装对象,所以这里赋值不会报错。
console.log(test.a);
这里之前的包装对象已经被抛弃了,但是使用了"."运算符,所以又创建一个新的包装对象,但是这个对象的属性a并没有赋值,所以属性a的值是undefined。

说到实际运用中,有的浏览器性能不是很好,比如说低版本IE,当频繁处理字符串时,效率会很低。所以很多时候,我们还不如直接显式地创建包装对象,防止浏览器过多地创建隐式的包装对象,提升性能。

//不推荐使用种方法
var example = "this is a example"; 
//推荐使用这种方法,提升性能。
var example2 = new String("this is a example");

​原文链接:http://www.qdfuns.com/notes/23931/908d7f91530ac100b3a04a8e1ebabb3c.html

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

“js基本类型的包装对象” 的相关文章

windows系统下如何通过CMD来打开Node.js - web开发

这篇“windows系统下如何通过CMD来打开Node.js”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“windows系统下如何通过CMD来打开Nod...

php中的超全局变量怎么用 - 编程语言

这篇文章主要介绍了php中的超全局变量怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php中的超全局变量怎么用文章都会有所收获,下面我们一起来看看吧。 一、$_GET变量$_GET变量是用于处理GET请求...

2022第十三届蓝桥杯省赛C/C++B组 真题题解

目录 A.九进制转十进制 B.顺子日期 C.刷题统计 D.修剪灌木 E.X 进制减法 F.统计子矩阵 G.积木画 H.扫雷 I.李白打酒加强版 J.砍竹子 特别说明本文章运用了万能头文件#include <bits/stdc++.h>会降低代码的运...

Dhaka 2003 / UVa 12050 - Palindrome Numbers (回文数)

12050 - Palindrome NumbersTime limit: 3.000 secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=467&page...

Vim

日常常用到多行合并的功能,记录如下: 第一种, 多行合并成一行,即: AAAAABBBBBCCCCC合并为:AAAAA BBBBB CCCCC 方法1: normal状态下 3J 其中的3是范围,可以是书签或者搜索位置等方式实现,J为合并 注: 如果改为3gJ的话,则合...

ubuntu

Users running Ubuntu on laptops and notebooks could prolong their battery life with a few simple tricks. This is a simple tutorial that anyone can app...