一、創(chuàng)建對象常用的幾種方式
1.字面量方式
var obj = {
name:"kitty", //屬性
say:function(){ //方法
console.log("my name is"+obj.name);
}
}
obj.say(); //my name is kitty
我們傳統(tǒng)方式是這樣寫的:
var name= "Tom";
function eat(){
console.log("漢堡");
}
var name = "Mary";
function eat(){
console.log("面條");
}
console.log(name); //只會輸出Mary
eat(); //只會執(zhí)行面條
Mary覆蓋了Tom,要想不被覆蓋要聲明不一樣的變量
----------------------------------------
用字面量方法,即使變量名一樣也不會被影響
var person1 = {
name:"Tom",
eat:funtion(){
console.log(person1.name+"漢堡");//person1可換成this(詳見上一篇)
/*推薦大家在對象內(nèi)部操作當前對象的屬性和方法時用this
因為如果因為某些原因要去改這個person1,下面不需跟著改動,可維護性高*/
}
}
var person2 = {
name:"Tom",
eat:funtion(){
console.log(person2.name+"面條");
}
}
console.log(person1.name);
console.log(person2.name);
person1.eat();
person2.eat();
對象數(shù)據(jù)類型:可以給數(shù)據(jù)進行分組,即使屬性名和方法名重復,也不會發(fā)生覆蓋
在開發(fā)復雜系統(tǒng)的時候,需要多人協(xié)作開發(fā),每個人負責不同的模塊
eg:
A同學創(chuàng)建了一個模塊
function change(){
}
B同學又加入了一個模塊
function change(){
}
那么,兩者發(fā)生了沖突,怎么辦呢?
//a同學這樣寫
var a = {
change:function(){
}
}
//b同學這樣寫
var b = {
change:function(){
}
}
完美解決。。
用面向?qū)ο蟮姆绞綄懘a 能夠?qū)崿F(xiàn)最基礎的一個模塊化開發(fā)
2.用new創(chuàng)建一個對象
var obj = new Object(); //創(chuàng)建一個空對象
obj.name = "jack";
obj.say = function(){
console.log("i believe i can fly");
}
二、面向?qū)ο缶幊毯锰?/h3>
· 可以解決數(shù)據(jù)分組的問題
· 如果一些數(shù)據(jù)是描述同一個事物的 我們可以把它們裝到一起 不會發(fā)生覆蓋
· 可以實現(xiàn)模塊化開發(fā)