JavaScript对象、基本类型和字面值之间的区别

问题

人们经常会遇到诸如对象(object),基本类型(primitive)和字面值(literal)这样的术语,这三者之间有何区别。我们又如何分辨他们呢?

解决方案

一个JavaScript字面值表示某种特定类型的一个值,例如,一个引用的字符串(String)、浮点数(Number)或布尔值(Boolean):

  "this is a string"

  1.89

  true

JavaScript基本类型是特定的数据类型的一个实例。JavaScript中有5种这样的类型:String、Number、Boolean、null和undefind。下面是JavaScript基本类型的一些例子;

  "this is a string"

  null

在这些基本数据类型中,有3个有对应的构造方法对象:String Number和Boolran。这些对象提供了对内建属性和方法的访问,允许我们做一些简单赋值和顺序访问之外的事情。

  var str1 = "this is a string"

  console.log(str1.length)   //访问对象的length属性

申明一个变量的时候,我们就像是在操作简单的字符串或数字一样

  var str1 = "this is a string"

然而,我们实际打开了通知一系列广泛功能的大门。如果不是依赖于JavaScript对象的话,我们可以给变量分配一个字符串,数字或布尔值。随后访问它,然而,如果我们要对变量做更多的事情的话,需要使用该数据类型所对应的JavaScript对象及其属性。例如如果想看一个字符串的长度,我们可以访问String对象的length属性

  var str1 = "this is a string"

  console.log(str1.length)

在幕后。当代码在一个字面值上访问一个String对象属性的时候。会创建一个新的String对象,并且其值设置为变量中所包含的字符串的值。访问并打印出length属性,并且丢掉新创建的String对象。实际上,JavaScript中确实有5个数据类型:字符串,数值,布尔类型,null,和undefind。只有字符串,数值,和布尔数据类型有对应的构造方法对象。字符串、浮点数、整数、和布尔值都是字面值:

  var str1 = "this is a simple string";  //引号里面的字符串就是字面值

   var num1 = 1.89;  //1.89是字面值

   var answer = true;   //true 是字面值

我们可以使用一个字面值表示或使用该对象而不带new操作符、从而创建基本类型的布尔值、字符串和数字变量:

     var str1 = String ("this is a string");  //基本类型字符串

   var num1 = Number(1.89); //基本类型数字

   var bool1 = Boolean(true);  //基本类型布尔值

要有意实例化一个对象。用new操作符:

  var str1 = new String("this is a string");

  var num1 = new Number(1.88);

  var bool1 = new Boolean(true);

当你使用严格相等来比较一个对象示例和一个字面值的时候,你可以快速区分一个基本类型和一个对象实例。  

  var str1 = String("string");

  var num1 =Number("1.88);

  var bool1 = Boolean(true);

  if(str1=="string"){

    console.log(‘equal‘)

  }

  if(num1==1.88){

    sonsole.log(‘equal‘)

  }

  if(bool1==true){

    console.log(‘equal‘)

  }

  var str2 = new String("string");

  var num2 = new Number(1.88);

  var bool2 = new Boolean(true);

  if(str2=="string"){

    console.log(‘not equal‘)

  }

  if(num2==1.88){

    console.log(‘not equal‘)

  }

  if(bool2==true){

    console.log(‘not equal‘)

  }

输出结果如下:

  equal

  equal

  equal

  not equal

  not equal

  not equal

基本类型变量严格的等于字面值,而对象实例则不会。为什么基本类型变量严格地等于字面值呢?因为基本类型是根据值来比较的,而值是字面值。

大多时候,JavaScript开发者不会直接为3种基本数据类型创建对象实例,开发者只是想要像数字,布尔值或者字符串一样起作用的一个数值变量,布尔值或字符串变量。而不是先有一个对象,我们不需要对象的扩展功能,更为重要的是,当开发者在代码中使用严格相等性或类型检查的时候,他们想要与期望的数据类型一致的一个变量,而不是定义为一个"对象":

  var num1 = 1.88;

  var num2 =new Number(1.88);

  console.log(typeof num1); //输出数字

  console.log(typeof num2); //输出对象

时间: 2024-10-07 11:33:27

JavaScript对象、基本类型和字面值之间的区别的相关文章

JavaSE(六)包装类、基本类型和字符串之间的转换、==和equals的区别

一.包装类 Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足, 在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class),有些地方也翻译为外覆类或数据类型类. 1.1.包装类均位于Java.lang包,包装类和基本数据类型的对应关系如下表所示: Primitive-Type   Wrapper-Class        byte          

基本类型和包装类型的区别

Java 的每个基本类型都对应了一个包装类型,比如说 int 的包装类型为 Integer,double 的包装类型为 Double.基本类型和包装类型的区别主要有以下 4 点. 01.包装类型可以为 null,而基本类型不可以 别小看这一点区别,它使得包装类型可以应用于 POJO 中,而基本类型则不行. POJO 是什么呢?这里稍微说明一下. POJO 的英文全称是 Plain Ordinary Java Object,翻译一下就是,简单无规则的 Java 对象,只有属性字段以及 setter

Java基础(35):装箱与拆箱---Java 中基本类型和包装类之间的转换

基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更加轻松便利了. 那什么是装箱和拆箱呢?我们分别来看下 装箱:把基本类型转换成包装类,使其具有对象的性质,又可分为手动装箱和自动装箱 拆箱:和装箱相反,把包装类对象转换成基本类型的值,又可分为手动拆箱和自动拆箱 下面的代码的例子演示了装箱与拆箱的过程: 结果为: 1 public class HelloWorld { 2 pub

Java 中基本类型和字符串之间的转换

Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使用String类的 valueOf() 方法 3. 用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串 再来看,将字符串转换成基本类型有两种方法: 1. 调用包装类的 parseXxx 静态方法 2. 调用包装类的 valueOf() 方法转换为基本类型的包装类,会自动拆箱 PS:其他基

javascript中基本类型和引用类型的区别分析

大多数人系统学习过的程序设计语言,在这些语言的学习过程中最早学到的几个要点之一就是值类型和引用类型的区别.下面我们来看一下在 JavaScript 中基本数据类型(Primitive Types)和引用类型(Reference Types)的区别.. 基本类型和引用类型 ECMAScript包含两个不同类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段:引用类型值指由多个值构成的对象.当我们把变量赋值给一个变量时,解析器首先要做的就是确认这个值是基本类型值还是引用类型值. 常见的五种

[转]javascript中基本类型和引用类型的区别分析

基本类型和引用类型 ECMAScript包含两个不同类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段:引用类型值指由多个值构成的对象.当我们把变量赋值给一个变量时,解析器首先要做的就是确认这个值是基本类型值还是引用类型值. 常见的五种基本数据类型是: Undifined.Null.Boolean.Number和String.这五种基本数据类型可以直接操作保存在变量中的实际值. 看下面例子: ? 1 2 3 4 5 6 7 8 9 var a = 10; var b = a;    

javascript 数据类型(基本类型和引用类型的定义和区别)

ECMAStript变量包含两种不同类型的值,基本类型和引用类型. 基本类型:指的就是保存在栈内存中的简单数据段. 引用类型:指的是那些保存在堆内存中的对象,换句话说,就是变量名实际上是一个指针,而这个指针指向的位置,就是保存对象的位置. 两种不同的访问方式 基本类型:按值访问,操作的是它们实际的值. 引用类型:按引用访问,当查询时,我们需要先从栈中读取内存地址,然后按照指针所指向的地方,找到堆内存里面的值. 基本类型 基本的数据类型有:`undefined,boolean,number,str

JS对象、基本类型和字面量的区别

字面值: var str1='this is a simple string'; var num1=1.45; var answer1=true; 基本类型: var str2=String('this is a simple string'); var num2=Number(1.45); var bool2=Boolean(true); 对象实例: var str3=new String('this is a simple string'); var num3=new Number(1.45

简单分析JAVASCRIPT的基本类型和引用类型

由于最近项目当中使用EXTJS这样一种前端框架,所以就离不开JavaScript得使用,所以最近我就在自己研究学习JavaScript,目的是为了方便开发的顺利进行.但是在实际开发当中,我发现JavaScript是一门很简单就能上手的语言,但是真正使用起来我们就会发现他作为一门弱类型的语言,从某种角度来看可能是一个既有趣有强大的功能,但是也是容易出问题的特性. 楼主本人也是处于学习这门语言当中,所以写一篇博客也是为了巩固自己的知识,同时也是为了和大家一起分享我对于学习当中一些大家都用过但是不一定