鍍金池/ 問答/HTML5  HTML/ js中什么時(shí)候需要?jiǎng)?chuàng)建自定義對(duì)象

js中什么時(shí)候需要?jiǎng)?chuàng)建自定義對(duì)象

初級(jí)前端請(qǐng)教,我在js中一般通過new創(chuàng)建的都是那些內(nèi)置對(duì)象比如Date,Array。很少通過構(gòu)造函數(shù)創(chuàng)建自定義對(duì)象,請(qǐng)問一般什么情況下使用自定義對(duì)象比較好呢?

回答
編輯回答
乖乖瀦

js 寫多了就會(huì)用到了,比如封裝自己的方法庫 組件 框架

2018年7月11日 02:25
編輯回答
巫婆

需要使用構(gòu)造函數(shù)的時(shí)候,一般都是到了復(fù)用代碼的時(shí)候。
比如你的一個(gè)頁面上有兩個(gè)板塊用到了分頁功能,不可能復(fù)制粘貼吧?
我們可以寫一個(gè)構(gòu)造函數(shù)來復(fù)用

function Pagination(wrapperNode) {
  // 分頁需要渲染的位置
  this.node = wrapperNode;
}

Pagination.prototype.render = function(currentPage, allPage) {
  this.currentPage = currentPage;
  this.allPage = allPage;
  ...
  // 做完一系列運(yùn)算之后,開始渲染
}

Pagination.prototype.next = function() {};
Pagination.prototype.prev = function() {};

好的,寫完之后你就可以在需要地方調(diào)用了

var page_1 = new Pagination(document.getElementById('my_page');
page_1.render(1, 5);
...

var page_2 = new Pagination(document.getElementById('your_page');
page_2.render(1, 12);

當(dāng)你寫完一個(gè)功能,發(fā)現(xiàn)有地方也需要類似的功能的時(shí)候,就大膽的把共用的邏輯抽出來做成類吧,不同的地方寫成參數(shù)傳遞即可。

然后就是趕緊擁抱es6,寫到飛起:

class Pagination {
  // 構(gòu)造函數(shù)
  constructor() {
    
  }
 
  render() {}

  next() {}

  prev() {}
}
2017年2月18日 03:39