对象、引用类型与基本类型内存对比

对象

对象定义

function show(){
	alert('show');
}
//创建对象方式1,可以省略new
var obj = new Object();

//创建对象后添加一些自定义功能,1对象.功能名 2对象['']
obj.name = 'katsuki'; //自定义存储功能,取名name
obj.age = 23; 
obj['slaray'] = 9980;

//自定义函数功能,取名fun并拥有show函数功能
⑴obj.fun = show; //取得show函数功能并命名fun
⑵obj.fun = function(){ //匿名函数
	alter('show');
}

//调用
document.write(obj.name);
obj.fun();

--------------------------

//创建对象方式2:字面量
function show(){
	alert('show');
}
var obj2 = {
	name: 'katsuki',
	age: 18,
	⑴fun: show; 
	⑵fun: function(){ 
	alter('show');
	}
}
document.write(obj2.name);
document.write(obj2.age);
obj.fun();

-------------------------

var obj3={} //使用字面量创建空对象
ojb3.name = 'katsuki'
ojb3 gg = fuction(){
	alter('gg');
}
document.write(obj3['name']); //使用中括号调用时必须加引号
obj3.gg();

对象操作

var obj = {
	obj.name = 'katsuki', 
}
//增(未有属性)
obj['age'] = 20; //方括号
obj.age = 20; //点语法
//改(已有属性)
obj.age = 18;
//删(删除属性)
delete obj.age;

遍历对象for…in

var obj = {
	name: 'katsuki', 
	age: 18
}
for(var key in obj){
	//遍历过程把每次把对象属性赋值给key
	//所以获取对象属性值为:obj[key]
    document.write(key, obj[key]); // 输出name,katsuki age,18 
}

引用类型与基本类型内存对比

基本类型:直接存储数据值,存放在栈中

//a将数值赋值到b,b也存储39
var a = 39
var b = a; 

引用类型:存储访问对象的地址存放在栈中,地址对应的数据存放在堆中

//obj的地址赋值到obj2,若对象地址为0x26f56a,则存该16进制地址
var obj = {
	obj.name = 'kstsuki';
}
var obj2 = obj;

案例:数字交换

/*
	基本类型,n,m,num1,num2分别存储自己的值
	传值给num1,num2后,函数内发生交换,n,m没有交换
*/
function changenum(num1,num2){
	var temp = num1;
	num1 = num2; //num1 =9
	num2 = temp; //num2 =3
}
var n=3,m=9;
changenum(n,m);
document.write(n + m + num1 + num2) //输出 3 9 9 3

------------------------------------

/*
	引用类型,传递地址值,函数obj获得objs相同的地址
	对该地址内内容操作,使地址内容改变
	再次访问该地址内容时,是改变后内容
*/
function changenum(obj){
	var temp = obj.num1;
	obj.num1 = obj.num2; 
	obj.num2 = temp; 
}
var objs = {
	num1:3,
	num2:9
}
changenum(objs);
document.write(objs.num1 + objs.num2);// 输出 9 3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值