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. Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)

    671. 二叉树中第二小的节点 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0.如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值. 给出这样的 ...

  2. Java实现 LeetCode 92 反转链表 II

    92. 反转链表 II 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. 示例: 输入: 1->2->3->4->5-> ...

  3. Java实现堆排序问题(变治法)

    问题描述 用基于变治法的堆排序算法对任意一组给定的数据进行排序 2.1 堆排序原理简介 堆可以定义为一颗二叉树,树的节点中包含键(每个节点是一个键),并且满足下面两个条件: (1)树的形状要求--这颗 ...

  4. java实现 蓝桥杯 算法训练 安慰奶牛

    问题描述 Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续地编号为1到N.每一个牧场都是一个奶牛的家.FJ计划除去P条道路中尽可能多的道路, ...

  5. Java实现第九届蓝桥杯快速排序

    快速排序 以下代码可以从数组a[]中找出第k小的元素. 它使用了类似快速排序中的分治算法,期望时间复杂度是O(N)的. 请仔细阅读分析源码,填写划线部分缺失的内容. package bb; impor ...

  6. Linux RPM管理命令

    RPM安装 rpm -ivh 包全名,其中,-i 表示安装,-v 表示显示详细信息,-h 表示显示进度 手动安装会有很多包依赖需要解决,如果是模块依赖,可以使用rpmfind进行查询解决 RPM升级 ...

  7. 总结:Jmeter常用参数化方式

    一.从CSV文件中读取 二.通过函数生成 三.用户自定义变量 四.用户参数 五.使用正则表达式提取 六.从数据库中读取

  8. win7 64位系统怎么使用debug

    安装DOSbox软件 下载个debug.exe然后把这放到D盘或E盘的根目录下 然后启动dosbox软件,在下面输入 mount c d:\ enter键 c: enter键 输入debug命令就ok ...

  9. Android中Widget开发步骤

    一.创建一个类,继承自 AppWidgetProvider 生命周期介绍: onEnabled():创建第一个widget时调用 onDisabled():删除最后一个widget时调用 二.在清单文 ...

  10. count(1) AND count(*) 对比

    相信很多小伙伴都想知道count(1) 和 count(*) 的速度问题 ,今天我给大家做一下测试.我这里测试的是MySql数据库 声明:测试之前 我数据库表里面有100万条数据.我们先来测试coun ...