### 一、App(Object object)
注冊小程序。接受一個`Object`參數,其指定小程序的生命周期回調等。
`App()`必須在`app.js`中調用,必須調用且只能調用一次。不然會出現無法預期的后果。
參數 Object object 如下:
| 屬性 | 類型 | 必填 | 說明 |
| --- | --- | --- | --- |
| onLaunch | function | 否 | 監聽小程序初始化 |
| onShow | function | 否 | 監聽小程序啟動或切前臺 |
| onHide | function | 否 | 監聽小程序切后臺 |
| onError | function | 否 | 錯誤監聽函數 |
| onPageNotFound | function | 否 | 頁面不存在監聽函數 |
| onUnhandledRejection | function | 否 | 未處理的 Promise 拒絕事件監聽函數 |
| 其他 | any | 否 | 開發者可以添加任意的函數或數據變量到`Object`參數中,用`this`可以訪問 |
~~~
App({
onLaunch (options) {
// Do something initial when launch.
},
onShow (options) {
// Do something when show.
},
onHide () {
// Do something when hide.
},
onError (msg) {
console.log(msg)
},
globalData: 'I am global data'
})
~~~
## 二、AppObject getApp(Object object)
獲取到小程序全局唯一的`App`實例。
參數 Object object 如下:
| 屬性 | 類型 | 默認值 | 必填 | 說明 |
| --- | --- | --- | --- | --- |
| allowDefault | boolean | false | 否 | 在`App`未定義時返回默認實現。當App被調用時,默認實現中定義的屬性會被覆蓋合并到App中。 |
~~~
// other.js
var appInstance = getApp()
console.log(appInstance.globalData) // I am global data
~~~
#### 注意
* 不要在定義于`App()`內的函數中,或調用`App`前調用`getApp()`,使用`this`就可以拿到 app 實例。
* 通過`getApp()`獲取實例之后,不要私自調用生命周期函數。