JavaScript基础原始数据类型的封装对象(Primitive Wrapper Object)

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"
时间: 2024-07-30 05:14:16

JavaScript基础原始数据类型的封装对象(Primitive Wrapper Object)的相关文章

javascript 的原始数据类型

javascript 的原始数据类型有五种,分别是Number.String.Boolean.null.undefined 原始类型数据的特点:值保存在变量本地,且赋值给其他变量后,其它变量改变不影响原来的值. 一.Number类型: 专门保存数字的类型,可用于进行数学计算等的数值. 所占空间:64位(8个字节)二进制保存.注:一个字节8个位. 强调:数字所占的空间与数值的大小没有关系,均占8个字节. 在Number类型中,经常会因为舍入误差引起错误; 舍入误差:因为计算机中无法精确表是十分之一

javascript基础语法-数据类型

二 javascript基础语法 (一)JavaScript 数据类型 ***************************************************************** 不同的编程语言往往有不同的数据分类,与C和Java等面向对象语言不同的是,JavaScript变量不需要明确的数据类型声明,在第一次对变量赋值的时候会根据数据值自动确定数据类型.这也是JavaScript简单易用的原因之一,作为初学者往往会在变量类型的转换上遇到问题,JavaScript就简化了

JavaScript基础学习--数据类型

JavaScript 数据类型 在 JavaScript 中有 5 中不同的数据类型: string number boolean object function 3 种对象类型: Object Date Array 2 个不包含任何值的数据类型: null undefined null 的数据类型是 object 未定义变量的数据类型为 undefined 如果对象是 JavaScript Array 或 JavaScript Date ,我们就无法通过 typeof 来判断他们的类型,因为都

JavaScript内部原理系列-变量对象(Variable object)

概要 我们总是会在程序中定义一些函数和变量,之后会使用这些函数和变量来构建我们的系统.然而,对于解释器来说,它又是如何以及从哪里找到这些数据的(函数,变量)?当引用一个对象的时候,在解释器内部又发生了什么? 许多ECMA脚本程序员都知道,变量和执行上下文是密切相关的: var a = 10; // 全局上下文中的变量 (function () { var b = 20; // 函数上下文中的局部变量 })(); alert(a); // 10 alert(b); // "b" is n

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

JavaScript 是世界上最流行的脚本语言,被设计为向 HTML 页面增加交互性. 我把它的基础语法分为了三个部分:数据类型,运算符,流程控制语句.入门还是比较容易的. 基本概念: 标识符:指变量.函数.属性的名字,或者函数的参数. 命名规则:可以由字母,数字,下划线_, $组成,但是不能以数字开头,对大小写敏感,区分大小写. JavaScript是弱类型语言,定义变量的时候不用指定变量的类型.定义变量时要使用 var 操作符,比如,var a=10; var b="hello";

JavaScript基础15——js的DOM对象

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>js的DOM对象</title> 6 <script type="text/javascript"> 7 // DOM:Document Object Model 文档对象模型 8 /* 9 文档:超文本文档html.xml 10 对象:提供了属

JavaScript基础17——js的Date对象

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>js的Date对象</title> 6 <script type="text/javascript"> 7 var date = new Date(); 8 document.write("当前日期:" + date); 9

JavaScript基础13——js的string对象

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>js的string对象</title> 6 <script type="text/javascript"> 7 var str = "abcdefg"; 8 document.write("str字符串:"

JavaScript基础14——js的Math对象

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>js的Math对象</title> 6 <script type="text/javascript"> 7 // Math对象中的都是静态方法,不用实例化对象就可以使用 8 var num = 10.5; 9 document.write(&qu