一棕叫、什么是對象
生活中的一切事物都可以看成是對象,比如一臺電腦奕删,一個人俺泣,一個杯子。每個對象都有屬于他自己的屬性完残,比如人有性別身高和體重 伏钠;電腦有品牌,杯子有顏色和容量等谨设。
在js中熟掂,對象就是屬性的集合。同時它也是一種數(shù)據(jù)類型
二铝宵、創(chuàng)建一個對象
1.var obj={}
2.var obj=new Object();
創(chuàng)建一個人的對象,并且為對象中添加屬性
var person={
name:'張三',
age:18,
sex:'男'
}
獲取對象中的屬性有兩種方法
1.對象名.屬性名
person.name
//console.log(person.name);
2.對象名[屬性名]
person[age]
//console.log(person.['age']);
三鹏秋、對象中屬性的類型
1)對象中的屬性可以是字符串,數(shù)字亡笑,也可以為函數(shù)侣夷。當(dāng)對象中的屬性值為函數(shù)的時候,我們稱這個屬性為對象的方法
var person={
name:'張三',
age:18,
sex:'男',
sayName:function(){
console.log('我的名字叫張三')
}
}
person.sayName();
2)對象中的方法想要訪問對象中的屬性要用this關(guān)鍵字
var person={
name:'張三',
age:18,
sex:'男',
sayName:function(){
console.log('我的名字叫'+name);name不會被輸出
//對象中的方法想要訪問對象中的屬性必須要用this關(guān)鍵字
console.log('我的名字叫'+this.name);
}
}
person.sayName();
3)對象中的屬性被替換
var person={
name:'張三',
age:18,
sex:'男',
sayName:function(){
console.log('我的名字叫'+this.name);
}
}
cat.sayName();
cat.name='李四';
console.log(cat.name);
cat.sayName();
四仑乌、給對象中的方法傳參
var person={
name:'張三',
age:18,
sex:'男',
sayName:function(){
console.log('我的名字叫'+this.name);
},
count:function(a,b){
console.log(a+b);
}
cat.sayName();
cat.count(3,5);
五百拓、
1.如何遍歷js中的對象
var person={
name:'張三',
age:18,
sex:'男'
}
for(var key in person){
//輸出對象中的屬性值
console.log(person[key]);
//輸出對象中的關(guān)鍵字
console.log(key);
}
2.原始類型和引用類型
1)原始類型的傳參
var str='hello world';
function fun(s){
s='hello javascript';
console.log(s);
}
fun(str);
console.log(str);
2)引用類型的傳參
var obj={name:'jack',age:18};
function fun(o){
o.name='rose';
}
fun(obj);
console.log(obj);
3)原始類型與引用類型的差異
a相當(dāng)于把自己的值復(fù)制了一份給b,所以當(dāng)a的值改變的時候不會影響b的值的改變
var a='hello world';
var b=a;
var a='hello javascript';
console.log(a);//hello javascript
console.log(b);//hello world
上述案例中值得類型為字符串琴锭,接下來把字符串換成對象
var obj1={
name:'jack',
age:18
}
var obj2=obj1;
obj1.name='rose';
console.log(obj1.name);//rose
console.log(obj2.name);//rose
//我們發(fā)現(xiàn)當(dāng)obj1的值改變,obj2中的值也跟著變化衙传。因?yàn)橐妙愋痛鎯Φ氖且粋€地址决帖,而不是值本身。兩個對象引用的是同一個地址蓖捶。所有當(dāng)一個改變時地回,另一個也會跟著變
4)原始類型與引用類型比較的區(qū)別
//原始
var str1 = 'hello world';
var str2 = 'hello world';
console.log(str1 == str2); //true
//引用
var obj1 = {name:'xiaoming'};
var obj2 = {name:'xiaoming'};
console.log(obj1 == obj2); //false