JavaScript提供了5种原始数据类型:number, string, boolean, null, and undefined。对于前面3个,即number, string, 和boolean提供了封装对象,这些对象的构造函数是Number(), String(), 和Boolean()。下面的代码展示了原始数据类型和它们的封装对象之间的不同:

// a primitive number
var n = 100;
console.log(typeof n); // "number" // a Number object
var nobj = new Number(100);
console.log(typeof nobj); // "object"

封装对象提供了不少有用的功能,比如Number对象提供了toFixed() 和toExponential()等方法,String对象提供了substring(), charAt(), t和toLowerCase()等方法以及length属性。但其实原始数据类型也可以调用这些方法,因为当你试图对一个原始数据类型调用这些方法的时 候,JavaScript的运行环境会自动地把它们转换成封装对象:

// a primitive string be used as an object
var s = "hello";
console.log(s.toUpperCase()); // "HELLO" // the value itself can act as an object
"monkey".slice(3, 6); // "key" // same for numbers
(22 / 7).toPrecision(3); // "3.14"

由于原始数据类型可以完成封装对象的工作,我们没有必要在代码里new出封装对象:因为在需要的时候JavaScript运行环境会帮我们自动的转换它 们。在实际工作中需要乃至封装对象的情况比较少,只有在你需要为一个原始数据类型添加它自己的“属性”的时候,才有必要new出它的封装对象。因为如果你 无法直接使用一个原始数据类型的属性:

// primitive string
var greet = "Hello there"; // primitive is converted to an object
// in order to use the split() method
greet.split(' ')[0]; // "Hello" // attemting to augment a primitive is not an error
greet.smile = true; // but it doesn't actually work
typeof greet.smile; // "undefined"

最后说明一下,如果你不使用new来执行封装对象的构造函数,它们帮你把参数转换成一个原始数据类型:

typeof Number(1); // "number"
typeof Number("1"); // "number"
typeof Number(new Number()); // "number"
typeof String(1); // "string"
typeof Boolean(1); // "boolean"

http://maidini.blog.163.com/blog/static/3776270420093119130625/

JavaScript基础原始数据类型的封装对象(013)的更多相关文章

  1. JavaScript基础:数据类型的中的那些少见多怪

    原文:JavaScript基础:数据类型的中的那些少见多怪 Javascript共有6种数据类型,其中包括3个基本数据类型(string,number,boolean).2个特殊数据类型(undefi ...

  2. javascript 的原始数据类型

     javascript 的原始数据类型有五种,分别是Number.String.Boolean.null.undefined   原始类型数据的特点:值保存在变量本地,且赋值给其他变量后,其它变量改变 ...

  3. JavaScript 基础(数据类型、函数、流程控制、对象)

    一.JavaScript概述 1.1 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名Script ...

  4. JavaScript基础15——js的DOM对象

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. JavaScript基础之数据类型部分总结

    JavaScript 是世界上最流行的脚本语言,被设计为向 HTML 页面增加交互性. 我把它的基础语法分为了三个部分:数据类型,运算符,流程控制语句.入门还是比较容易的. 基本概念: 标识符:指变量 ...

  6. javascript基础二数据类型

    1.数据类型 javascript中的基本数据类型有4中,undefined,number,string,boolean 1.1 typeof关键字 typeof关键字可以获取一个变量的的类型.先举个 ...

  7. JavaScript基础-05-数组、Date对象、Math、包装类、字符串方法

    数组(Array) 1. 数组 数组也是一个对象,不同点:普通对象是使用字符串作为属性名的,数组是使用数字作为索引操作元素. 数组的存储性能比普通对象要好,在开发中经常使用数组来存储一些数据. 向数组 ...

  8. JavaScript基础17——js的Date对象

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. JavaScript基础18——js的Array对象

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

随机推荐

  1. Ftrace的部分使用方法

    ftrace主要是用于调试linux kernel调度相关的一个工具,也可用于分析部分kernel性能问题. 相关ftrace的介绍可以参考:kernel/msm-4.9/Documentation/ ...

  2. ASP.NET通过EntityFramework CodeFirst创建数据库

    Number1 新建一个项目 给新项目添加一个实体数据模型 选择第三个 这里我创建两个有关系的类,也就是有外键关系的数据库表 using System; using System.Collection ...

  3. Java实现 LeetCode 315 计算右侧小于当前元素的个数

    315. 计算右侧小于当前元素的个数 给定一个整数数组 nums,按要求返回一个新数组 counts.数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i ...

  4. Java实现最大连续子数组和

    1 问题描述 给定一个整数数组,数组里可能有正数.负数和零.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值.例如,如果输入的数组为{1,-2,3,10,-4, ...

  5. java实现第四届蓝桥杯大臣的旅费

    大臣的旅费 题目描述 很久以前,T王国空前繁荣.为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市. 为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大 ...

  6. FPGA之SPI SD卡读操作

    这几天在FPGA调试与SD通信,读SD卡里的图片,之前接触32时没有去研究过SD卡,不太熟悉操作流程,在网上找了很多资料,也看了几个32开发板的资料,但大多数都讲得不是特别清楚,只能瞎操作了一番,在别 ...

  7. 从大厂DevOps工具链部署,看现代产品的生命周期管理

    目录 1. 认识DevOps 1.1. DevOps工具链 1.2. CI 持续集成(Continuous Integration) 1.3. CD(持续交付 & 持续部署) 1.4. Agi ...

  8. 将pycharm中的代码上传到远程Ubuntu中

    no bb...下面直接放图开干...^_^

  9. redis缓存使用SpringDataRedis

    1. SpringDataRedis简介 1.1项目常见问题思考 我们目前的系统已经实现了广告后台管理和广告前台展示,但是对于首页每天有大量的人访问,对数据库造成很大的访问压力,甚至是瘫痪.那如何解决 ...

  10. Linux MySQL Proxy 读写分离

    导读 因为读写分离是建立在MySQL集群主从复制的基础上,还不了解的,先看我另一篇博客:点我直达 MySQL-Proxy简介 mysql-proxy是mysql官方提供的mysql中间件服务,上游可接 ...