摘要:組合構造函數原型模式解決構造傳參和共享問題,可以組合構造函數原型模式不共享的使用構造函數共享的使用原型模式強制指向這種模式也是最常見也是最常用的模式,這種混合模式很好的解決了傳參和引用共享的大難題。
寫在前面:
之前的文章都是寫構造函數,原型之類的。但是我們都知道原型最大的優點也是缺點就是共享。也是我們最頭疼的問題.
據共享的緣故,導致很多開發者放棄使用原型,因為每次實例化出的數據需要保留自己的特性,而不能共享。
解決構造傳參和共享問題,可以組合構造函數+原型模式
function Box(name, age) { //不共享的使用構造函數 this.name = name; this.age = age; this.fruits = ["apple", "banana", "orange"]; }; Box.prototype = { //共享的使用原型模式 constructor: Box, //強制指向Box run: function() { return this.name + this.age + this.fruits; } }
PS:這種模式也是最常見也是最常用的模式,這種混合模式很好的解決了傳參和引用共享的大難題。 是創建對象比較好的方法。
動態原型模式原型模式, 不管你是否調用了原型中的共享方法, 它都會初始化原型中的方法, 并且在
聲明一個對象時, 構造函數+原型部分讓人感覺又很怪異, 最好就是把構造函數和原型封裝
到一起。為了解決這個問題,我們可以使用動態原型模式
動態原型模式:
function Box(name ,age) { //將所有信息封裝到函數體內 this.name = name; this.age = age; if (typeof this.run != "function") { //僅在第一次調用的初始化 Box.prototype.run= function() { return this.name; }; } } var box = newBox("Lee", 3); alert(box.run())
第一次調用構造函數時, run()方法發現不存在,然后初始化原型。當第二次調用,就不會初始化, 并且第二次創建新對象, 原型也不會再初始化了。 這樣及得到了封裝, 又實現了原型方法共享,并且屬性都保持獨立.
注意:使用動態原型模式,千萬不能使用字面量的方式重寫原型,因為它會切斷實例與新原型之間的聯系!!!
這是Javascript OOP里面的其中兩種設計模式,下一篇文章會講寄生構造函數模式和穩妥構造函數模式。
還有最頭疼的繼承!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/88287.html
摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:在中,并沒有對抽象類和接口的支持。例如,當對象需要對象的能力時,可以有選擇地把對象的構造器的原型指向對象,從而達到繼承的效果。本節內容為設計模式與開發實踐第一章筆記。 動態類型語言 編程語言按數據類型大體可以分為兩類:靜態類型語言與動態類型語言。 靜態類型語言在編譯時已確定變量類型,動態類型語言的變量類型要到程序運行時,待變量被賦值后,才具有某種類型。 而JavaScript是一門典型...
摘要:面向對象面向對象的概述面向對象是什么面向對象編程的全稱是,簡稱。面向對象編程是用抽象方式創建基于現實世界模型的一種編程。面向對象編程可以看做是使用一系列對象相互協作的軟件設計。面向對象編程的山歌主要的特征是封裝繼承多態。 面向對象 面向對象的概述 面向對象是什么 面向對象編程的全稱是Object Oriented Programming,簡稱OOP。面向對象編程是用抽象方式創建基于現實...
摘要:學編程真的不是一件容易的事不管你多喜歡或是多會編程,在學習和解決問題上總會碰到障礙。熟練掌握核心內容,特別是和多線程初步具備面向對象設計和編程的能力掌握基本的優化策略。 學Java編程真的不是一件容易的事,不管你多喜歡或是多會Java編程,在學習和解決問題上總會碰到障礙。工作的時間越久就越能明白這個道理。不過這倒是一個讓人進步的機會,因為你要一直不斷的學習才能很好的解決你面前的難題...
閱讀 2604·2021-11-17 09:33
閱讀 3958·2021-10-19 11:46
閱讀 916·2021-10-14 09:42
閱讀 2261·2021-09-22 15:41
閱讀 4233·2021-09-22 15:20
閱讀 4638·2021-09-07 10:22
閱讀 2314·2021-09-04 16:40
閱讀 821·2019-08-30 15:52