js基本类型的包装对象
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
js基本类型的包装对象的更多相关文章
- JS 基本类型的包装对象
笔记整理自:廖雪峰老师的JS教程 目录 包装对象 不写new的作用 总结 注意 包装对象 JavaScript还提供了包装对象,熟悉Java的小伙伴肯定很清楚int和Integer这种暧昧关系. nu ...
- JS面向对象组件(一) ---包装对象与原型链
首先我们可以看看平时我们常用的 var str = 'hello'; alert(typeof str); //string var str = new String("hello" ...
- js学习笔记之包装对象
JavaScript包装对象 近日有时间,闲下来好好学习原生js JavaScript是一门面向对象语言,使用"."就可以访问对象的属性和方法,而基本类型(null, undefi ...
- js基本类型存放和对象存放的区别(对象遍历)
js的基本类型,对象类型的应用在初学的时候,需要自己加以明确,明确了数据类型,在使用过程中才能正确使用变量.如下两个例子是摘自初学时的笔记,为大家提供参考. 1.对象可以存放属性和方法,js基本类型不 ...
- 一道js题(引用类型、基本类型、包装对象、函数赋值)
var a = 1; var obj = { b: 2 }; var fn = function () {}; fn.c = 3; function test(x, y, z) { ...
- 轻松理解JS基本包装对象
今天来讨论一下JS中的基本包装对象(也叫基本包装类型),之前刚学到这里的时候,自己也是一头雾水,不明白这个基本包装对象到底是个什么鬼,后来找了很多资料,终于看清了它的真面目.首先呢,我们现在复习一下J ...
- js基础学习之-js包装对象
var test = "test"; test.a = "hello"; console.log(test.a); //undifined 定义: 在JavaS ...
- JavaScript 基本包装类型,包装对象
前言 javascript对象是一种复合值,它是属性或已命名值的集合.通过'.'符号来引用属性值.当属性值是一个函数时,称其为方法.通过o.m()来调用对象o中的方法.我们发现,字符串也同样具有属性和 ...
- javascript类型系统——包装对象
× 目录 [1]定义 [2]生存期 [3]显式创建[4]转型函数[5]比较运算 前面的话 javascript对象是一种复合值,它是属性或已命名值的集合.通过'.'符号来引用属性值.当属性值是一个函数 ...
随机推荐
- 使用SwipeRefreshLayout和RecyclerView实现仿“简书”下拉刷新和上拉载入很多其它
一.概述 本篇博客介绍的是怎样使用SwipeRefreshLayout和RecyclerView实现高仿简书Android端的下拉刷新和上拉载入很多其它的效果. 依据效果图能够发现,本案例实现了例如以 ...
- Behavioral模式之Interpreter模式
1.意图 给定一个语言,定义它的文法的一种表示.并定义一个解释器,这个解释器使用该表示来解释语言中的句子. 2.别名 无 3.动机 假设一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各种 ...
- LeetCode 三数之和 — 优化解法
LeetCode 三数之和 - 改进解法 题目:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复 ...
- Sping框架的IOC特性
IOC(Inversion of Control):控制反转 以下以课程与老师的安排来介绍控制反转. 一个合理的课程编排系统应该围绕培训的内容为核心,而不应该以具体的培训老师为核心,这样才能在正常授课 ...
- oracle 创建暂时表
提交事务后会自己主动清空,不同的事务之间数据隔离 create global temporary table GLS_REPORT_EXPR ( EXPRNO VARCHAR2(30) not n ...
- oc74--NSMutableArray
// // main.m // NSMutableArray ,可变数组 #import <Foundation/Foundation.h> int main(int argc, cons ...
- Bootloader - main system - Recovery的三角关系【转】
本文转载自:http://blog.csdn.net/u012719256/article/details/52304273 一.MTD分区: BOOT: boot.img,Linux ...
- 曼哈顿距离(坐标投影距离之和)d(i,j)=|X1-X2|+|Y1-Y2|.
曼哈顿距离(坐标投影距离之和)d(i,j)=|X1-X2|+|Y1-Y2|. 我们可以定义曼哈顿距离的正式意义为L1-距离或城市区块距离,也就是在欧几里德空间的固定直角坐标系上两点所形成的线段对轴产生 ...
- 统计ES性能的python脚本
思路:通过http请求获取es集群中某一index的索引docs数目变化来进行ES性能统计 import time from datetime import datetime import urlli ...
- 我眼中的SEO——略读一些SEO书后
近些日子一直在看一些SEO方面的书.为人有些浮躁,读SEO实在读不出太大营养,除了第一本书外,之后的书就是在不停地向后翻页.没有过太具体的实践,现在就来写一下我眼中的SEO.还希望各位多多指教. 1. ...