-
使用物件字面量模式來建立一個物件 (它也叫“單例模式” //JS與其他語言的單例模式有很大的區別(如Java),但這就是語言的區別)
var obj = {}; /* * 使用物件字面量,可以在建立物件時,直接指定物件中的屬性 * 語法:{屬性名:屬性值,屬性名:屬性值....} * 物件字面量的屬性名可以加引號也可以不加,建議不加, * 如果要使用一些特殊的名字,則必須加引號 * * 屬性名和屬性值是一組一組的名值對結構, * 名和值之間使用:連線,多個名值對之間使用,隔開 * 如果一個屬性之後沒有其他的屬性了,就不要寫, */
var obj2 = {
name:"Julius",
age:23,
gender:"男",
test:{name:"chen"}
};
-
使用建構函式建立物件 (使用new關鍵字呼叫的函式,是建構函式constructor
- 建構函式是專門用來建立物件的函式
- 使用typeof檢查一個物件時,會返回object)
var obj = new Object();
//向obj中新增一個name屬性
obj.name = "黎海霞同學";
//向obj中新增一個gender屬性
obj.gender = "女";
//向obj中新增一個age屬性
obj.age = secret;
- 使用工廠方法建立物件,通過該方法可以大批量的建立物件
function createPerson(name , age ,gender){
//建立一個新的物件
var obj = new Object();
//向物件中新增屬性
obj.name = name;
obj.age = age;
obj.gender = gender;
obj.sayName = function(){
alert(this.name);
};
//將新的物件返回
return obj;
}
var obj2 = createPerson("豬八戒",28,"男");
var obj3 = createPerson("白骨精",16,"女");
var obj4 = createPerson("蜘蛛精",18,"女");
-
使用建構函式建立物件 (
* 使用工廠方法建立的物件,使用的建構函式都是Object * 所以建立的物件都是Object這個型別, * 就導致我們無法區分出多種不同型別的物件) * 建立一個建構函式,專門用來建立Person物件的 * 建構函式就是一個普通的函式,建立方式和普通函式沒有區別, * 不同的是建構函式習慣上首字母大寫 * * 建構函式和普通函式的區別就是呼叫方式的不同 * 普通函式是直接呼叫,而建構函式需要使用new關鍵字來呼叫 * * 建構函式的執行流程: * 1.立刻建立一個新的物件 * 2.將新建的物件設定為函式中this,在建構函式中可以使用this來引用新建的物件 * 3.逐行執行函式中的程式碼 * 4.將新建的物件作為返回值返回 * * 使用同一個建構函式建立的物件,我們稱為一類物件,也將一個建構函式稱為一個類。 * 我們將通過一個建構函式建立的物件,稱為是該類的例項
function Person(name , age , gender){
this.name = name;
this.age = age;
this.gender = gender;
this.sayName = function(){
alert(this.name);
};
}
function Dog(){
}
var per = new Person("孫悟空",18,"男");
var per2 = new Person("玉兔精",16,"女");
var per3 = new Person("奔波霸",38,"男");
var dog = new Dog();
/*console.log(per);
console.log(dog);*/
/*
* 使用instanceof可以檢查一個物件是否是一個類的例項
* 語法:
* 物件 instanceof 建構函式
* 如果是,則返回true,否則返回false
*/
//console.log(per instanceof Person);
//console.log(dog instanceof Person);
* 所有的物件都是Object的後代,
* 所以任何物件和Object做instanceof檢查時都會返回true