js——引用类型和基本类型

js中的数据类型有以下几种:

Number   Boolean   undefined     Object   Function    String  Null

基本类型:Number Boolean  String  undefined null

引用类型:Object  Function

基本类型的数据是存放在栈内存中的,而引用类型的数据是存放在堆内存中的

复制变量值  

  基本类型:

var p = 1;

var p1 = p;

执行结果:

也就是说,基本类型的复制就是在栈内存中开辟出了一个新的存储区域用来存储新的变量,这个变量有它自己的值,只不过和前面的值一样,所以如果其中一个的值改变,则不会影响到另一个。

  引用类型:

var object1 = new Object();
var object2 = object1;

object2复制了object1的值,但是结果却不是像基本类型复制一样的

执行结果:

定义了一个对象其实是在栈内存中存储了一个指针,这个指针指向堆内存中该对象的存储地址。复制给另一个对象的过程其实是把该对象的地址复制给了另一个对象变量,两个指针都指向同一个对象,所以若其中一个修改了,则另一个也会改变。

object.name = ‘jhon‘;
alert(object.name);   //jhon

基本类型的数据是没有属性和方法的,引用类型才会有,但是为什么String类型却又那么多方法呢?

var string = "aaa";
var string2 = string.substring(0));   //aaa

基本类型的确没有方法和属性,因为一旦创建了属性或者方法就会被立刻销毁,但是为了方便程序员对这类的基本类型数据比较方便的操作,在底层做了一些工作,其实这段代码相当于:

var string = new String("aaa");
var string2 = string.substring(0);
string = null;

(1)创建一个String类型的实例(使用 new 操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中。而自动创建的基本包装类型的对象,则只存在于一
行代码的执行瞬间,然后立即被销毁 )

(2)在实例上调用指定方法

(3)销毁该实例

经过这三步,字符串值就变得和对象一样了,在Boolean  Number中也是这样

String  Boolean  Number 这三种类型也叫做  基本包装类型

时间: 2024-10-16 22:41:59

js——引用类型和基本类型的相关文章

JS 引用类型和值类型

自己的看高程3第五章应用类型的时候,有些迷糊,所以上网搜到这篇文章 转自求小天的博客园,地址:http://www.cnblogs.com/lxq1990/archive/2012/11/04/2754226.html 这个比喻很形象,帮助理解. js 值类型和引用类型 JavaScript值类型和引用类型有哪些 (1)值类型:数值.布尔值.null.undefined. (2)引用类型:对象.数组.函数. 如何理解值类型和引用类型及举例 我们可以用“连锁店”和“连锁店钥匙”来理解,不知道以下比

JS:引用类型,基本类型

引用类型对象的值是一个指针, 引用类型对象的值指向某个对象,对象的值指向对象,对象的值指向的对象有可定义可使用的方法和属性 基本类型对象的值是一个具体的值

浅谈JS引用类型之Array类型

最近看了一下红皮书,就整理一下,提炼一下里面的知识点! 创建方式 先从数组的创建方式说起,有两种创建方式 一种是:var arr = new Array (); 可以给构造函数传参数,如果只传一个参数,并且这个参数是数值,那么就创建该数值大小的数组,其他情况就是创建包含这些参数的数组 另一种是:var arr = []; 数组的每一项都是可以保存任何类型的数据的,var arr = [1,"hello",true,{a:1}];但是不推荐保存不同类型的值 length属性 1.它的值永

js 引用类型之object类型

创建object实例的方式有两种: 1.使用new 操作符后跟object构造函数: 如:var person = new object(); person.name="zhansan"; person.age=18; 2.使用对象字面量表示法:(比较常用,看着有封装的感觉,哈哈!其实字面量方式也是向函数传递大量可选参数的首选方式) 如:var person={ name:"zhansan", age:18 } ---------------------------

js引用类型之Array类型

第一种是使用Array()构造函数,如下所示: var array=new Array(); 第二种是使用数组字面量表示法.由一组包含数组项的方括号表示,多个数组之间以逗号隔开.如下所示: var array =["red","blue","black"]; 在数组中length属性不只是可读的,通过设置这个属性,可以在数组末尾添加或者删除数据 var bb = ["zd","zk","zl&qu

js 引用类型之Array类型

//1.concat() 方法 不会改变原数组,会复制一个原数组的副本进行拼接 var arr = ['red', 'zhansan', 'xin']; var arr2 = arr.concat('2', ['3', '9']); console.log(arr); //[ 'red', 'zhansan', 'xin' ] console.log(arr2); //[ 'red', 'zhansan', 'xin', '2', '3', '9' ] //2.slice() 方法 不会改变原数

由js apply与call方法想到的js数据类型(原始类型和引用类型)

原文地址:由js apply与call方法想到的js数据类型(原始类型和引用类型) js的call方法与apply方法的区别在于第二个参数的不同,他们都有2个参数,第一个为对象(即需要用对象a继承b,那么此时第一个参数就为a,没有则为null),call方法第二个参数为一个列表,可以是 obj.call(null, 1,2,3,4); 而apply第二个参数为数组.这就是区别,下面来说说对它们的认识. apply最常用的就是查找数组中的最大与最小值,还可以将2个数组合并: var max=Mat

JS的数据类型-引用类型和基本类型

在面试中遇到的问题. 在JS中直到ES6有7种基本类型:string, number, boolean,null,undefined,object,以及ES6的symbol. 这7种基本数据类型又可以分为引用类型和基本类型. 引用类型有Object,Object又分为对象,数组,函数. 引用类型的特点是在赋值时,不管引用类型的数据被赋值给几个变量,内存中只有这一个数据,所有被赋值的变量都引用了这一个数据.且任何一个变量更改了值,所有引用了这个数据的变量的值也随之改变. 比如: var a = [

JS引用类型 --- Object

一.对象的基础知识 概念:特指的某一个事物,有特征(属性)和行为(方法),可存储数据. 通俗理解:对象是一组无序键值对的集合,可存储数据. 对象的属性和方法:可以通过 . 的方式添加(这一点也证明了JS是一门动态类型的语言) JS中大多数引用类型的值,都是Object类型的实例 二.对象创建的 3种方式 1. {} 字面量创建对象 <script> var obj2 = {}; obj2.name = 'zhangxin'; console.log(obj2); </script>