不BB,直接正題app
單個綁定函數
const oldPage = Page Page = function(app) { // 注意公共函數的名字不要重複,不然覆蓋 app.util = function() {} return oldPage(app) }
多個綁定,文件綁定ui
const util = require('./util.js'); // 須要綁定的函數由util文件exports出來 const oldPage = Page Page = function(app) { let newPage = Object.assign({}, util, app) return oldPage(newPage) }
const oldPage = Page Page = function(app) { app.onLoad = function(options) { // 這裏必須使用function, 不能夠使用箭頭函數, 不然this指向錯誤 console.log("擴展onLoad"); // onLoad函數在是當前page實例上下文中執行,因此當前的this爲當前page實例 // 若是不使用call來硬綁定,而是直接app.onLoad(),那麼onLoad裏的this將爲app這個對象 // 即咱們正常在page.js裏Page(app) 括號裏面咱們本身寫的page對象 if(typeof app.onLoad === 'function') { app.onLoad.call(this, options); } } return oldPage(app) }
ps.想更系統的瞭解js關於this的知識能夠戳這裏this
我本身寫的時候,將自定義的內容單獨封裝到一個js文件中,而後在app.js中引用這個文件便可code
require('./init.js'); //引用便可 App({ onLaunch: function (options) { } })