1. 程式人生 > >面向對象的聲明方式

面向對象的聲明方式

script 一份 初始化 一個 his pro 本質 this 構造器

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();

面向對象的聲明方式