对象
对象定义
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