js之面向對象----封裝篇


學習了一天的面向對象總結一下,共分為三類
- -! 老規矩 第一部分是概念性知識!!!

面向對象編程,我們可以把他想象成我們在造人。一個對象便是一個人,這個人有胳膊有腿,這便是一個對象的屬性或者方法。。然后再通過用戶的操作指令(click,hover等)來調用我們的js(我們制造的小人),控制我們的小人來執行不同的動作!
#_#  貌似我解釋的夠抽象。。。
當然了面向對象最大的優點就是復用性強、節省代碼、提高開發效率、下來來完成我的處女作文章。。。


1、工廠模式
- -#  學習了這個模式真的挺受教的,開始怎么寫都有錯誤,最后通過問了下朋友才弄明白,原來 下面的例子中 var obj = new Object();
這句話中的Object 是不可以改變的,他是js對象(我是這么認為的,如有不對請指出) 當然這句話也可以這么寫
var obj = {};   或者  var obj = new  function(){};
//從這幾種方式我想大家應該可以猜到我們var obj 只要是等於一個對象({})就是可以的。
 1 function box(name,age,fuck){
 2         var obj = new Object(); //   windows 對象
 3         obj.name = name;
 4         obj.age = age;
 5         obj.run = function (){
 6             return fuck;
 7         };
 8         return obj;
 9 };
10     var bb = box('小明','38','北京市');
11     console.log(bb.run()); //北京市
注: 工廠模式生產出來的實例不支持用 prototype 繼承!所以為了后期維護代碼,不建議經常使用。
看到一篇文章上說,不讓使用this  或者 new 的時候使用這種工廠模式。。。有點不懂,,什么情況會不能使用this 或者new 呢??
實在搞不懂這種寫法什么時候會用到。。。。好吧不糾結了。。知道這種寫法就好。。。。


2、構造函數
也是大家喜歡用的一種方式(更完美的是+原型模式混合着寫),
1 function dog(){
2         this.cat = 123;
3         this.mao = 456;
4         this.stu = function(){
5             console.log(this.mao);
6         }
7 };
8   //console.log(typeof dog);
3、原型模式   (繼續上面構造函數的例子)
1 dog.prototype.gou = function(){
2         console.log(this.mao); 
3 };
4     var ani = new dog();
5     //ani.gou();  456
6     //console.log(ani);   dog {cat: 123, mao: 456, stu: function, gou: function}
 
        

 

2和3加起來就是個人認為就是完美的開放方式啦。。。。原型+構造函數。
第一次總結這么多。。想想還有些雞凍呢。。。如何說的不對的地方,還請指出。。
咦? 貌似面向對象還缺一部分吧。。。 貌似還有繼承。。除了繼承還有其他的嘛? 明天再研究。。。去吃飯。。。。







 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM