1、js面向對象
// 編程語言:類、對象。封裝、繼承、多態
// 編程思想:構造函數(相當于js中的類)、對象
var obj1 = new Object();
obj1.name = "張三";
obj1.sayHi = function () {
alert("hello");
};
var obj2 = {
name: "張三",
age: 12,
syaHi: function () {
alert("hello");
}
}
// 通過函數(構造函數)創建對象:工廠模式
function CreatPerson (name,age) {
// 創建一個空的局部對象
var person = {};
// 給這個局部對象添加新的屬性、方法
person.name = name;
person.age = age;
person.sayHi = function () {
alert("hello");
};
// 把新對象返回出去,否則函數外部無法獲取到這個對象
return person;
}
// 通過調用函數來創建對象
// 弊端:系統無法判斷該對象是由哪個構造函數創建出來的
var obj3 = CreatPerson("宋吉吉", 12);
console.log(obj3 instanceof CreatPerson); //false
var arr = new Array();
console.log(arr instanceof Array); //true
var obj4 = new CreatPerson("馬容易劈腿",23);
console.log(obj4 instanceof CreatPerson); //false
2、new構造函數創建
// 1、創建出對象的構造函數
function CreatPerson (name,age){
// 把對象的屬性、方法掛靠在this指針身上,當調用該函數創建對象時,this指針
就指向這個新對象,掛靠在this上的屬性、方法也就被添加進這個對象
this.name = name;
this.age = age;
this.sayHi = function () {
// 此處的this也指向創建出的對象
alert(this.name + "hello");
};
}
// 2、通過new調用構造函數來創建對象
var per1 = new CreatPerson('奧斯特洛夫斯基',80);
per1.sayHi();
console.log(per1 instanceof CreatPerson);
var per2 = new CreatPerson('奧利奧',3);
// 判斷per1和per2的sayHi方法是否是同一塊內存
console.log(per1.sayHi == per2.sayHi);
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。