亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

總結JS創建對象的模式

發布時間:2020-07-29 14:27:38 來源:億速云 閱讀:91 作者:小豬 欄目:web開發

這篇文章主要講解了總結JS創建對象的模式,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

1.工廠模式

抽象了創建具體對象的過程,創建了一種函數,封裝特定的接口創建對象的細節。

  • 新建一個對象
  • 定義屬性和方法
  • return剛新建的對象
function createPerson(name, age, job) {
 var obj = new Object();
 obj.name = name;
 obj.age = age;
 obj.job = job;
 obj.sayHi = function() {
 congsole.log(this.name);
 };
 return obj;
}

var person1 = createPerson("name1", "age1", "job1");
var person2 = createPerson("name2", "age2", "job2");

存在問題:

沒有解決對象識別的問題(怎么識別對象的類型)

2.構造函數模式

  • 不顯式創建對象
  • 直接將屬性和方法定義在this
  • 沒有return
  • 通過 new操作符調用
function Person(name, age, job) {
 this.name = name;
 this.age = age;
 this.job = job;
 this.sayHi = function() {
 console.log(this.name);
 };
}

var person1 = new Person("name1", "age1", "job1");
var person2 = new Person("name2", "age2", "job2");

存在問題:

  • 每個方法都要在實例上創建一次

3.原型模式

創建的每一個函數都有prototype原型屬性,這個屬性是一個指針,指向一個對象,這個對象的用途是包含可以由特定類型的所有實例共享的屬性和方法。

所有原生引用類型都在其構造函數的原型上定義了方法

function Person{

}

Person.prototype.name="name"
Person.prototype.age="age"
Person.prototype.job="job"
Person.prototype.sayHi=function(){
 console.log(this.name)
}

var person1=new Person()
var person2=new Person()

存在問題:

  • 所有屬性是被很多實例共享的

4.組合構造和原型模式

構造函數用來定義實例屬性,原型模式用來定義方法和共享的屬性

function Person(name, age, job) {
 this.name = name;
 this.age = age;
 this.job = job;
}
Person.prototype={
 constructor:Person;
 sayHi:function(){
 console.log(this.name)
 }
}

var person1 = new Person("name1", "age1", "job1");

5.動態原型模式

這里對原型的修改,能夠對所有實例生效,只在初次調用構造函數會執行

function Person(name,age,job){
 this.name=name;
 this.age=age;
 this.job=job;
 if(typeof this.sayHi !="function" ){
 Person.prototype.sayHi=functong(){
  console.log(this.name)
 }
 }
}

var person1 = new Person("name1", "age1", "job1");

6.寄生構造函數模式

工廠模式+構造函數

  • 返回的對象與構造函數、構造函數的原型屬性之間沒有關系
  • 不能依賴instanceof來去定對象原型
  • 不建議使用
function Person(name, age, job) {
 var obj = new Object();
 obj.name = name;
 obj.age = age;
 obj.job = job;
 obj.sayHi = function() {
 congsole.log(this.name);
 };
 return obj;
}

var person1 = new Person("name1", "age1", "job1");

7.穩妥構造模式

  • 沒有公共屬性
  • 不使用this
  • 不使用new
function Person(name, age, job) {
 var obj = new Object();
 // 定義室友變量和函數
 obj.sayHi = function() {
 congsole.log(name);
 };
 return obj;
}

var person1 = Person("name1", "age1", "job1");
// name1

看完上述內容,是不是對總結JS創建對象的模式有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丹凤县| 赤壁市| 扎兰屯市| 昌宁县| 班玛县| 甘肃省| 舟曲县| 得荣县| 安丘市| 清新县| 通榆县| 璧山县| 财经| 沅江市| 应用必备| 舞钢市| 竹溪县| 泾川县| 达拉特旗| 安宁市| 甘肃省| 霸州市| 游戏| 宁陕县| 乐至县| 三台县| 山丹县| 宁乡县| 德化县| 鸡泽县| 丰台区| 湘阴县| 淮安市| 高台县| 布拖县| 五寨县| 同仁县| 黑河市| 崇信县| 蛟河市| 孝昌县|