js面向對象入門

  一般咱們寫js以及調用:javascript

function init(){
        console.log("init")
    }
function load(){
        console.log("load")
    }
init();
load();

    在頁面的script標籤對裏定義兩個function,而後執行一下函數名便可。若是咱們還要定義一些變量,或者別的函數啥的 ,則繼續按照語法往下寫。長此以往,這個頁面函數不可勝數,分不清哪些函數是同屬一個功能,哪些函數同屬另外一個功能,這樣很明顯不友好,我以前就在幾千行的js中找某個功能的N個方法,大多在一塊,個別不在,很難找,特費勁。html

  大概是出身後端的緣由,對面向對象有必定的理解,後來知道javascript也能夠面向對象編程,一些寫法天然也就有所變化了~java

  既然是面向對象編程,那麼一切皆對象,咱們就用對象這個點來闡述下面要講到的面向對象編程。git

  什麼是對象?=>萬物皆對象。github

  對象的特徵是什麼=>具備一系列的屬性和方法。編程

  因此咱們在進行面向對象編程的時候,重點看屬性和方法。後端

  javascript建立對象有三種方式,分別是字面量方式、函數方式、原型方式:設計模式

    //字面量方式
    var obj1={
        init:function(){
            console.log("init1")
        }
    };
    obj1.init();
    //函數方式
    var obj2=function(){
        this.init=function(){
            console.log("init2")
        }
    }
    var obj2=new obj2();
    obj2.init();
    //原型方式
    function Obj3(){}
    Obj3.prototype.init=function(){
        console.log("init3");
    }
    var obj3=new Obj3();
    obj3.init();

  字面量方式的本質實際上是javascript的語法糖,var obj1={} 等價於 var obj1 = new Object();函數

  函數方式也不復雜,能夠理解爲一個類,類裏面就有屬性和方法,當對這個類進行實例化,也就是new操做的時候,會生成一個具有類的屬性和方法的對象。this

  原型方式涉及到javascript中的原型和原型鏈,這塊比較深度, 目前不作多說,僅需知道便可。


  關於使用面向對象進行編程,我很早時候寫了一個栗子在github,https://github.com/lovemoqing/UploadImg/blob/master/UploadImg.html 能夠點開看看。

  ...

  小結一寫,在面對業務龐雜的js代碼時,在編寫之初就應該設計好對象,以及對象的屬性和方法,通常一個功能點對應一個對象,這樣在編寫js的時候,根據對象的劃分,代碼會很是優雅,也方便後續查找和維護。總之,寫法只是一個入門,面向對象還有不少待深刻的地方,好比javascript設計模式等。

相關文章
相關標籤/搜索