面向對象的聲明方式
1.最早的聲明方式
let person=new Objiect{
person.name="張山";
person.age=18;
person.say=function(){
console.log("my name is"+person.name+"年齡是"+person.age);
}
}
console.log(person.name);
person.say();
這種方式的缺點是沒有對函數進行封裝,每次創建對象都會書寫大量的代碼,現在已經廢棄了
2.字面量創建對象(json),使用一對大括弧
let person={
name:"張三",
age:18
}
這種方式書寫起來更加簡便,但是本質上和Object是類似的,沒有進行封裝。但是這種方法不僅沒有被廢棄,反而現在非常的火,基本快要替代XML
使用這種方式創建的對象有一個名字叫做JSON,全稱JavaScript Object Notation,翻譯成中文是JavaScript對象交換格式,這個JSON主要是做數據的傳輸。
XML也是用於數據的傳輸,但是XML的解析非常的麻煩,有很多無用標簽,所以已經逐漸被JSON所替代
3.自定義構造函數創建對象
let Person=function(name,age){
this.name=name;
this.age=age;
this.say=function(){
console.log(this.name);
}
}
let zhangsan=new Person("張三",18);
console.log(zhangsan.age);
zhangsan.say();
使用自定義構造函數以後,實例化對象不需要再一次書寫name,age等屬性,只需要通過一個關鍵字new實例化出來一個就可以了。這種寫法更加接近其他的高級語言。
但是這種方式還是有一個缺點,那就是方法對於每個對象來說是公用的。所以有一份就可以了,不需要每個對象裏面都有一份這個相同的方法
4.構造函數+原型方法
let Person=function(name,age){
this.name=name;
this.age=age;
}
Person.prototype.say=function(){
console.log(this.name);
}
let zhangsan=new Person("張三",18);
console.log(zhangsan.age);
zhangsan.say();
這種方式的核心理念就是將共同的方法部分寫在了原型對象上面。之後實例化出來的每個對象都共享這個原型方法
5.ES6中創建對象的方法(類)
class Person{
//構造器函數,由於初始化函數
constructor(name ,age){
this.name=name;
this.age=age;
}
//原型方法
say(){
console.log(this.name)
}
}
let zhangsan=new Person("張三",18);
console.log(zhangsan.age);
zhangsan.say();
面向對象的聲明方式