对象:
创建对象:
=============通过对象字面量的形式创建对象=============
var obj={}; //没有任何属性的对象 //对象用{ }
alert(typeof obj); //输出的数据类型 Object
var obj1={x:1,y:2,z:3}; //有属性的对象,键值对 x:键 1值
var obj2={ //对象里面可以放键值对,也可以放方法 后面用逗号隔开
'x':1, //Javascript关键字必须放到引号之间 如:for while do delete等
"y":2,
username:'king',
'for':'Javascript关键字必须放到引号之间',
'first-name':'queen',
married:true,
test:null,
test1:undefined,
salary:12.3,
person:{
username:'king',
age:12,
addr:'北京'
}
};
====================通过new Object()创建对象=================
var obj3=new Object(); //创建一个空对象,{}
var arr=new Array(); //空数组,[]
var date=new Date(); //日期时间对象
var reg=new RegExp('js'); //创建正则对象
console.log();
===================通过构造函数的形式创建对象=================
function Test(){ //Test 函数名
}
var obj4=new Test();
alert(typeof obj4);
function Test1(num1,num2){ //形参
this.n1=num1;
this.n2=num2;
}
var obj5=new Test1(5,6); //参数
alert(obj5 instanceof Test1); //instanceof实例化 判断对象obj4是不是由函数Test来创建的 结果为布尔类型 true
=================通过Object.create()创建对象============
var obj6=Object.create({x:1});
var obj7=Object.create(null);
var obj8=Object.create(Object.prototype); //创建一个普通的空对象 也可以是上面那个
alert(typeof obj8);
===============增删改查===============
查询属性,对象.属性名/对象["属性名"]
var person={ //创建一个对象
username:'king',
age:12,
salary:1234.56,
addr:'北京',
sex:'男',
};
console.log('用户名为:'+person.username+"\n"+'性别:'+person.sex); //查询属性 对象.属性名
console.log('薪水:'+person['salary']+'\n'+'地址:'+person["addr"]); //查询属性 对象["属性名"] 一般用这一种
如果属性不确定,需要使用[ ]
var key='username';
console.log(person.key); //输出结果为undefined 因为上面的对象没有key
console.log(person[key]); //输出的结果就为king
console.log(person['key']); //属性名用引号来包,而上面的对象没有key
function PersonInfo(name,age,sex){ //通过构造函数的形式来创建对象
this.name=name; //定义对象名
this.age=age;
this.sex=sex;
}
var person1=new PersonInfo('king',34,'男'); //创建了三个属性
console.log(person1.name+person['sex']); //输出对象的属性
添加属性:
var obj={};//空对象 //创建一个空对象
obj.username='king'; //直接创建属性进行添加 .属性名
obj.age=12;
obj.addr='北京';
obj['test']='this is a test'; //[ "属性名" ]
console.log(obj.username+'\n'+obj.age+'\n'+obj.addr+'\n'+obj['test']); //输出的结果就是上面对象的属性
修改指定属性:
obj.username='queen'; //也是直接修改
obj['test']='ymt'; //重新赋值
console.log('修改之后的名字'+obj.username); //输出的结果为:修改之后的名字queen
console.log(obj['test']); //test
通过delete删除指定属性:
delete obj['test']; //直接删除指定的属性,
console.log(obj['test']); //输出的结果就为undefined
delete obj.username;
console.log(obj['username']);
console.log(obj); //删除过的属性,原始位置不保留,且新属性不占前面的位置,直接排在后面
通过for/in遍历属性:
var obj1={
x:1,
y:2,
test:'this is a test',
edu:'ymt'
};
for(var p in obj1){ //p在obj1对象中
console.log(p+'\n'); //输出p,输出的是对象中所以的键
}
对象中有方法:
var obj2={ //创建对象
username:'king',
age:12,
addr:'北京',
sayHi:function (){ //创建匿名函数对象属性
return 'say Hi';
},
info:function(){
return '用户名:'+this.username+'\n'+'年龄:'+this.age+'\n地址:'+this.addr; //创建匿名函数对象属性
}
};
console.log(obj2.sayHi()); //输出的是函数里面要返回的内容:say Hi 要在对象名后面加()
console.log(obj2.info());
console.log(obj2.info); //对象名狗不加()回输出info后的整个属性内容
function Person(username,age,sex,addr){ //形参
this.username=username; //后形参
this.age=age;
this.sex=sex;
this.addr=addr;
this.info=function(){
return this.username+this.addr;
}
}
var p1=new Person('queen',34,'女','上海'); //参数
console.log(p1.info());
p1.test='this is a test'; //添加了一个属性
console.log(p1.test); //输出结果this is a test
p1.info1=function(){ //添加了一个函数方法
return 'this is a test1111'; //返回
};
console.log(p1.info1()); //结果输出this is a test1111