js 值类型和引用类型

it2025-12-04  16

今天来给大家介绍一下数据类型的另一种解读,值类型和引用类型(及简单类型和复合类型)

一、基本概念

  ECMAscript变量包括两种不同的数据类型的值,一种叫做简单类型(值类型),指的是简单的数据段,另一种叫做复合数据类型(引用类型),是由多个值构成的对象。

  在js的数据类型中,number,boolean,string,null和undefined都属于值类型,而函数和对象属于引用类型。

 

二、数据类型判断

  基本类型:typeof

  引用类型:instanceof

var a=10; console.log(typeof a); //number var b=true; console.log(typeof b); //boolean var arr=[]; console.log(arr instanceof Array); //true var obj={}; console.log(obj instanceof Object); //true; var fun=function(){ var i=0; console.log(i); } console.log(fun instanceof Function) //true

三、存储机制

  基本数据类型:是存放于栈内存中,包括变量标识符和变量的值,基本数据类型复制后开辟的是新的内存,两个变量互不影响。

  引用类型:保存在堆内存中,是对地址的引用(及指针),所以变量复制后的两个变量指向的还是同一个对象,因此对其中一个进行操作,另一个结果也会受到影响。

 

  先给大家举点例子吧

 

var num1=10; var num2=num1; num2-=2; console.log(num1,num2); //10,8 var arr1=[1,2,3]; var arr2=arr1; arr2.push(4); console.log(arr1,arr2); //[1,2,3,4],[1,2,3,4] var person1={ name:'zhangsan', age:20 } var person2=person1; person2.name='lisi'; console.log(arr1,arr2); //{name:'lisi',age:20},{name:'lisi',age:20}

 

 

四、创建对象实例的方法

  1,使用new操作符后跟Object构造函数

  2,字面量

  

var obj=new Object();// var obj2={}; console.log(obj,obj2); //{},{} console.log(obj==obj2) false 堆内存,不同地址 /获取 //以及点表示法和方括号表示法 var person1={ name:'zhangsan', age:20 } console.log(person1.name)//zhangsan console.log(person1['name'])//zhangsan

  ps:点表示法和方括号表示法的区别

  1,能用点表示法标识的一定可以用方括号表示,但能用方括号表示的,不一定能用点表示

  2,方括号表示法可以用变量名做属性名,点表示法不能

  3,方括号可以用纯数字表示属性,点表示法不能

  4,方括号表示法可以用js的关键字和保留字作为属性,点表示法不能

 

  此处我就不向大家要一一举例啦,这里还是很好理解的,总之就是方括号表示法的功能强于点表示法,但是一般我们用点表示法注意下特殊的就好了。

 

转载于:https://www.cnblogs.com/epines/p/9131305.html

最新回复(0)