Web前端-JS-day05-面向物件
阿新 • • 發佈:2018-11-15
1.面向過程與面向物件
- 1.面向過程:凡事都要親力親為,每件事的具體過程都要知道,注重的是過程
2.面向物件:根據需求找物件,所有的事情都用物件來做,注重的是結果
2.JS的特性
- 1.面向物件的特性:封裝、繼承和多型
- 2.JS不是面向物件的語言,但是可以模擬面向物件的思想
3.JS是基於物件的語言
3.什麼是物件
- 1.看得見、摸得到、具體特指的某個東西
- 2.物件:有特徵和行為,具體特指的某一個事物
3.物件:有屬性和方法,具體特指的某個事物
4.建立物件
- 1.建立的三種方式:
(1)呼叫系統的建構函式,建立物件
(2)自定義建構函式,建立物件
(3)字面量的方式,建立物件 - 2.建立物件方式一
(1)例項化物件
var obj = new Object();
(2)新增屬性 物件.名字=值
obj.name = "小蘇";
obj.age = 28;
(3)新增方法 物件.名字=函式
obj.eat = function(){
console.log("我喜歡吃油炸食品!");
}
(4)獲取屬性和方法
console.log(obj.name);
obj.eat(); - 3.建立方式二-工廠模式建立物件
(1)如何獲取該變數(物件)是不是屬於什麼型別的?
語法:變數 instanceof 型別的名字→布林型別true false
(2)在當前的方法中,可以使用this關鍵字代表當前的物件
(3)如何一次性建立多個物件?→把建立物件的程式碼封裝在一個函式中
function createObject(){
var obj = new Object();
obj.name="小芳";
obj.sayHi=function(){ console.log("我叫"+this.name);}
//返回物件
return obj;
}
function createObject1(name){
var obj = new Object();
obj.name=name;
obj.sayHi=function(){ console.log("我叫"+this.name);}
//返回物件
return obj;
}
(4)總結:上面就是工廠模式建立物件 -
- 自定義函式建立物件--建立物件方式2
(1)函式與建構函式的區別:名字是不是大寫(首字母是大寫)
function Person(){ }//參照Object的定義方式
function Person(){
this.name="小明";
this.age=10;
this.sayHi=function(){
console.log("我叫:"+this.name+"年齡是:"+this.age);
}
}
function Person(name,age){
this.name=name;
this.age=age;
this.sayHi=function(){
console.log("我叫:"+this.name+"年齡是:"+this.age);
}
}
var person1 = new Person("小明",20);
console.log(person1 instanceof Person);j→true //說明person1是Person的物件
(2)自定義建構函式建立物件時
--做了4件事--系統做的
** 1.在記憶體中開闢(申請一個空閒的記憶體空間)空間,儲存建立的新物件
** 2.把this設定為當前物件
3.設定物件的屬性和方法的值
(3)自定義建構函式--小貓
function Cat(color,weight,age){
this.color =color;
this.weight=weight;
this.age=age;
this.eat=function(){
console.log("吃魚,吃老鼠");
}
}
//建立物件--例項化一個物件,並初始化
5.字面量的方式建立物件--建立方式三
var obj = {};//空物件
obj.name="小明";
obj.sayHi=function(){
console.log("我是"+obj.name);
}
//優化後的寫法:
var obj={
name:"小明",
sayHi:function(){
console.log("我是:"+this.name);
}
}
(1)缺陷:一次性的物件5. js是一門什麼樣的語言?
- 自定義函式建立物件--建立物件方式2
- 是一門解析性的語言
- 是一門指令碼語言
- 是一門弱型別的語言,宣告變數都用var
- 是一門基於物件的語言
是一門動態型別的語言