- A+
所属分类:Web前端
一、数组的存储
1、当声明一个变量时,var a = 111; 在后台计算机翻译时,var声明 a变量 所以此时会产生一个栈内存,变量 a 的初始值为undefined,然后 = 111 ; undefined消失,111的值被赋值给了a。如果多个变量赋值的话,栈内存的执行顺序是先进后出的顺序。也叫做压栈。栈内存属于基础数据类型,存入的是一个值。
2、当声明一个数组时,var arr = ['1','2','3']; 后台计算机是将arr的值以地址的形式存入在堆内存中,堆内存的可以随时取值,没有顺序,堆内存属于引用数据类型,存入的是一个地址
1、 2、
3、浅copy
<script> var a = 111; var arr = a; a = 100; var arr = ['1','2',a]; console.log(arr); </script>
此时a的值在栈内存中,同时也以地址的形式在堆内存的arr中,所以当a重新赋值时,arr数组的值也会改变
所以浅copy,copy的不是值,而是地址,其中一个值发生改变,另一个值也会随之改变
二、Object 对象
创建对象:
方法一:var 对象名称 = new Object();
方法二:var 对象名称 = {'键':‘值’,'键':‘值,'键':‘值,'键':‘值};
<script> //第一种创建方式 var car = new Object(); //属性 car.color = 'black'; car.band = 'hongqi'; car.price = '20w'; //方法 car.run = function(){ console.log(this.band+'百公里5s'); } car.stop = function(){ console.log('停止'); } //查看对象 console.log(car); //查看属性 console.log(car.color); //外部调用属性 var name = 'band'; console.log(car[name]); //调用方法 car.run(); //第二种创建方式 字面量形式 var dog = { // 属性 'name':'dahuang', 'age':6, 'gender':'nma', // 方法 'eat':function(){ console.log('吃饭'); }, 'run':function(){ console.log('跑'); } } console.log(dog); //属性 console.log(dog.name); //方法 dog.run(); </script>
在调用属性及方法时, . 的后面不能识别外部变量,当使用 [ ] 时,可以在中括号里添加变量即可调用。