《JavaScript启示录》——1.8 null、undefined、"string"、10、true和false等原始值不是对象

1.8 null、undefined、"string"、10、true和false等原始值不是对象

null和undefined都是非常简单的值,它们不需要构造函数,也没有使用new操作符来将自己创建为JavaScript值。欲使用null或undefined,只需将它们看做操作符来使用即可。从技术上来讲,从构造函数返回的字符、数字、布尔值并不是对象。

下面对原始值和其他原生JavaScript对象之间的差异进行了比较。

<!DOCTYPE html><html lang="en"><body><script>

// 使用原始值的时候,不会创建对象,注意没有使用new关键字
var primitiveString1 = "foo";
var primitiveString2 = String('foo');
var primitiveNumber1 = 10;
var primitiveNumber2 = Number('10');
var primitiveBoolean1 = true;
var primitiveBoolean2 = Boolean('true');

// 确认不是对象类型
console.log(typeof primitiveString1, typeof primitiveString2);
   // 输出 'string,string'
console.log(typeof primitiveNumber1, typeof primitiveNumber2);
   // 输出 'number,number'
console.log(typeof primitiveBoolean1, typeof primitiveBoolean2);
   // 输出 'boolean,boolean'

// 比较用于创建对象的构造函数和new关键字的用法

var myNumber = new Number(23);
var myString = new String('male');
var myBoolean = new Boolean(false);
var myObject = new Object();
var myArray = new Array('foo', 'bar');
var myFunction = new Function("x", "y", "return x * y");
var myDate = new Date();
var myRegExp = new RegExp('\\bt[a-z]+\\b');
var myError = new Error('Crap!');

// 输出 'object object object object object function object function object'
console.log(
typeof myNumber,
typeof myString,
typeof myBoolean,
typeof myObject,
typeof myArray,
typeof myFunction, // 注意所有的function对象返回的类型都是function
typeof myDate,
typeof myRegExp, // 注意RegExp()的类型返回的是function
typeof myError
);

</script></body></html>

希望大家从前面的代码中可以掌握:原始值不是对象。原始值的特殊之处在于它们是用于表示简单值。

时间: 2024-11-05 14:54:13

《JavaScript启示录》——1.8 null、undefined、"string"、10、true和false等原始值不是对象的相关文章

《JavaScript启示录》——导读

前言 本书无关于JavaScript设计模式,也无关于JavaScript面向对象代码实现.本书的写作目的也不是鉴别JavaScript语言特点的好坏.本书并不是一本完整的参考指南.它面向的读者人群并不是编程新手或对JavaScript完全陌生的人员.同时,它也不是一本JavaScript攻略手册.关于上述这些方面的书籍都已经面世. 本书的撰写意图是通过考察原生JavaScript对象和不同环境对原生对象的支持的细微差别,来给读者展现准确的JavaScript世界观:复杂值.原始值.作用域.继承

《JavaScript启示录》——1.13 如何存储或复制复杂值

1.13 如何存储或复制复杂值 复杂值是通过引用进行存储和操作的,理解这一点相当重要.创建一个包含复杂对象的变量时,其值是内存中的一个引用地址.引用一个复杂对象时,使用它的名称(即变量或对象属性)通过内存中的引用地址获取该对象值.当考虑试图复制一个复杂值时会发生什么事的时候,这就非常重要了.下面创建一个对象,并将它保存在变量myObject中,然后将myObject中的这个值复制到变量copyOfMyObject中.实际上,这并不是复制对象,更像是复制对象的地址. <!DOCTYPE html>

《JavaScript启示录》——1.11 原始值(String、Number、Boolean)在被用做对象时就像对象

1.11 原始值(String.Number.Boolean)在被用做对象时就像对象 原始值被当作构造函数创建的一个对象来使用时,JavaScript会将其转换为一个对象,以便可以使用对象的特性(如方法),而后抛弃对象性质,并将它变回到原始值.下面的代码采用了原始值,并展示了将值作为对象使用时会发生什么事情. <!DOCTYPE html><html lang="en"><body><script> // 生成原始值 var myNull

Javascript基础_简单比较undefined和null 值_基础知识

JavaScript 中有两个特数值: undefined和null,在比较它们的时候需要留心.在读取未赋值的变量或试图读取对象没有的属性时得到的就是 undefined 值. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Learn4UndefinedAndNull</title> </head

《JavaScript启示录》——1.10 原始值比较采用值比较

1.10 原始值比较采用值比较 可以通过比较原始值来确定其值在字面上是否相同.从逻辑上讲,如果将一个包含数值10的变量与另一个包含数值10的变量进行比较,JavaScript将会认为它们是相等的,因为10与10是相同的(即10===10).同样,如果将原始字符串"foo"与另一个拥有'foo'值的原始字符串进行比较也会采用同样的方法.比较的结果是,根据它们的值,它们是彼此相等的(即'foo'==='foo'). 在下面的代码中,我使用原始数字演示了"值比较"的概念,

《JavaScript启示录》——1.7 原始值(或简单值)

查看下面的代码,并思考一下字符串.数字.布尔值.null和undefined值是否可以更加复杂.将它与你所知道的Object()实例或Array()实例或其他任何复杂对象进行比较. <!DOCTYPE html><html lang="en"><body><script> var myString = 'string' var myNumber = 10; var myBoolean = false; // 可以是true,也可以是fal

《JavaScript启示录》——1.16 typeof操作符

1.16 typeof操作符 typeof操作符用于返回正在使用值的类型.但它返回的值并不一致,或者说,逻辑上不一致.下面的代码展示了使用typeof操作符所返回的值. <!DOCTYPE html><html lang="en"><body><script> // 原始值 var myNull = null; var myUndefined = undefined; var primitiveString1 = "string

JavaScript必知必会(三) String .的方法来自何方_javascript技巧

String 我们知道javascript 包括:number,string,boolean,null,undefined 基本类型和Object 类型. 在我的认知中,方法属性应该是对象才可以具有的. var str="hello,world"; var s=str.subString(,);//ell alert(typeof(str)+":"+typeof(s));//string:string 从上面的返回类型来看,str是string 类型的. 再看下面的

javascript正则表达式和字符串RegExp and String(二)_正则表达式

在上篇文章给大家介绍了javascript正则表达式和字符串RegExp and String(一),本文给大家继续分享相关内容. 前言 我认为,在学习一门编程语言的过程中,字符串.数组.容器是非常重要的部分,为了提高编程效率,我通常会对字符串.数组以及容器作深入的学习,详细了解相关特点及对应的API.这篇文章是针对javascript字符串学习写下的笔记,在此与需要的朋友分享. 思维导图 字符串的创建方式 字符串是javascript中的基本类型之一,它对应的类型是String,可以通过两种方