欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript 面向?qū)ο髮崙?zhàn)思想分享

 更新時間:2017年09月07日 22:07:31   作者:乘風(fēng)gg  
萬物皆對象,所以,任何事物都是有特征(屬性)和動作(方法)的,一般拿到一份需求分檔,或者你瀏覽一個網(wǎng)頁看到一個畫面的時候,腦子里就要有提煉出來的屬性和方法的能力,那你才是合格的

一直以來,很多新手都會經(jīng)常問,我學(xué)完了基礎(chǔ)知識,如何做項目?平時在公司工作都是做些什么?其實我想說,只要你找對方法,隨便打開一個網(wǎng)站,都能是你的項目。

這里指的面向?qū)ο蟛粏螁芜m用于javascript,也適用其他語言。
萬物皆對象,所以,任何事物都是有特征(屬性)和動作(方法)的,一般拿到一份需求分檔,或者你瀏覽一個網(wǎng)頁看到一個畫面的時候,腦子里就要有提煉出來的屬性和方法的能力,那你才是合格的。

例如一個購物車?yán)?/p>

估計很多人都做過購物車,我就不賣關(guān)子,做任何東西,先宏觀思考*,然后再去處理細(xì)節(jié),然后組裝起來,就好像組裝汽車的道理一樣。例如上圖,紅色的就是屬性,黃色的就是方法,抽象出屬性和方法,其他都是死的。

假如是剛學(xué)前端的同學(xué),可能就會用這種全局化的變量,也叫面向函數(shù)編程,缺點就是很亂,代碼冗余

//商品屬性
  var name = 'macbook pro'
  var description = ''。'
  var price = 0;
  //商品方法
  addOne:funcion(){alert('增加一件商品')},
  reduceOne:function(){alert('減少一件商品')},

  //購物車屬性
  var card = ['macbook pro' ,'dell']
  var sum = 2,
  var allPrice = 22000,
  //購物車方法
  function addToCart:function(){
      alert('添加到購物車')
    }


  addToCart()

假如是單例模式的思想,可能會這樣做,但這樣還是不太好。對象太多,可能造成變量重復(fù),項目小還可以接受

var product={
    name:'macbook pro',
    description:'',
    price:6660,
    addOne:funcion(){},
    reduceOne:function(){},
    addToCart:function(){
      alert('添加到購物車')
    }
  }

  /*購物車*/
  var cart={
    name:'購物車',
    products:[],
    allPrice:5000,
    sum:0
  }

假如是有一定經(jīng)驗的人,可能會這樣子做。

function Product(name,price,des) {
    /*屬性 行為 可以為空或者給默認(rèn)值*/
    this.name = name;
    this.price = price;
    this.description = des;
  }
  Product.prototype={
    addToCart:function(){
      alert('添加到購物車')
    }
    addOne:funcion(){},
    reduceOne:function(){},
     /*綁定元素*/
    bindDom:function(){
    //在這里進行字符串拼接,
    //例如
    var str = ''
    str +='<div>價格是:'+this.privce+'</div>'
    return str
    },

  }

function Card(products,allPrice,sum) {
    /*屬性 行為 可以為空或者給默認(rèn)值*/
    this.products = products;
    this.allPrice = allPrice;
    this.sum = sum
  }
  Product.prototype={
    getAllPrice:function(){
      alert('計算購物車內(nèi)商品總價')
    }
  }

通過創(chuàng)建各種對象例如macbook

//后臺給的數(shù)據(jù)
 var products= [
    {name:'macbook',price:21888},
    {name:'dell',price:63999}
  ]

 var str = ''
 for(var i = 0,len=products.length;i<len;i++) {
    var curName = products[i].name
    var curName = new Product()
    curName.name=products[i].name;
    curName.price=products[i].price;
    str+= curName.bindDom()
  }

上面這種方式,就降低了耦合性,不管你用什么語言,還是任何javascript框架(模板引擎,jquery,react等),都是脫離不開上面那段代碼的思想,

再來說說,現(xiàn)在mvvm的模式,例如vue,他們不需要獲取dom,那么渲染的時候,定義好一個一個的組件就行了。屬性全部用{{}}定義好,剩下的就是替換模板,就解決了。

data:{
    name ='',
    price='',
    description = ''
},
methods:{
   addToCart:function(){
      alert('添加到購物車')
    }
  addOne:funcion(){},
  reduceOne:function(){}, 
}

然后page級組件引入這個產(chǎn)品組件,然后循環(huán)這個產(chǎn)品組件就好了。

組件化的好處

將代碼分類管理
代碼清晰
容易維護
容易發(fā)現(xiàn)問題
代碼可讀性好
易于團隊化協(xié)作
當(dāng)然這篇文章是為了鍛煉抽象化思維的能力,雖然跟javascript模塊化的歷程也有點搭邊,我還希望大家在瀏覽任何網(wǎng)頁的時候,去分析一下,這個模塊你來設(shè)計,你會怎么設(shè)計,能做到解耦和,版本可迭代可維護,利于團隊開發(fā)嗎?

如有不對,請指正

相關(guān)文章

  • javascript提取內(nèi)容到作為文章簡介的代碼

    javascript提取內(nèi)容到作為文章簡介的代碼

    javascript提取文本框內(nèi)容到另一個文本框,經(jīng)常被用來做內(nèi)容簡介的讀取,這樣編輯就不用每次都去處理一篇文章的簡介了。
    2011-01-01
  • 動態(tài)添加option及createElement使用示例

    動態(tài)添加option及createElement使用示例

    動態(tài)添加option在某些特殊的情況下還是比較實用的,本文有個小示例為大家介紹下createElement使用,感興趣的朋友可以參考下
    2014-01-01
  • 打字效果動畫的4種實現(xiàn)方法(超簡單)

    打字效果動畫的4種實現(xiàn)方法(超簡單)

    下面小編就為大家?guī)硪黄蜃中Ч麆赢嫷?種實現(xiàn)方法(超簡單)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • JavaScript中arguments.callee屬性的作用與替換方案

    JavaScript中arguments.callee屬性的作用與替換方案

    這篇文章介紹了JavaScript中arguments.callee屬性的作用與替換方案,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • js中常用的Tab切換效果(推薦)

    js中常用的Tab切換效果(推薦)

    下面小編就為大家?guī)硪黄猨s中常用的Tab切換效果(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,祝大家游戲愉快哦
    2016-08-08
  • 查看圖片(前進后退)功能實現(xiàn)js代碼

    查看圖片(前進后退)功能實現(xiàn)js代碼

    前進后退實現(xiàn)的前提是:images文件夾下圖片的命名是從1~5.jpg有規(guī)律的,感興趣的朋友可以參考下哈,希望可以幫助到你
    2013-04-04
  • es6 filter() 數(shù)組過濾方法總結(jié)

    es6 filter() 數(shù)組過濾方法總結(jié)

    這篇文章主要介紹了es6 filter() 數(shù)組過濾方法總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • MUI 上拉刷新/下拉加載功能實例代碼

    MUI 上拉刷新/下拉加載功能實例代碼

    這篇文章主要介紹了MUI 上拉刷新/下拉加載功能實例代碼,包括一些個人心得,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧
    2017-04-04
  • JS中g(shù)etElementsByClassName與classList兼容性問題解決方案分析

    JS中g(shù)etElementsByClassName與classList兼容性問題解決方案分析

    這篇文章主要介紹了JS中g(shù)etElementsByClassName與classList兼容性問題解決方案,結(jié)合實例形式分析了getElementsByClassName與classList的使用方法、原理及兼容性問題的處理技巧,需要的朋友可以參考下
    2019-08-08
  • JavaScript實現(xiàn)頁面動態(tài)驗證碼的實現(xiàn)示例

    JavaScript實現(xiàn)頁面動態(tài)驗證碼的實現(xiàn)示例

    這篇文章主要介紹了JavaScript實現(xiàn)頁面動態(tài)驗證碼的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評論