中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信小程序實戰中如何使用類優化程序結構

發布時間:2022-01-04 18:50:28 來源:億速云 閱讀:128 作者:柒染 欄目:大數據

本篇文章為大家展示了微信小程序實戰中如何使用類優化程序結構,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

雖然Javascript是一種腳本語言,但是依然可以定義和使用類。在這個小程序中,將監控點相關的功能做成了一個類。

alarm.js

//alarm.js:

const util = require('./util.js')

const CHECK_BUFFER_SIZE = 3

//構造函數

function Alarm(data){

 this.latitude = data.latitude

 this.longitude = data.longitude

 this.state = data.state

 this.checkBuffer = []

 this.title = data.title

 this.monitor_type = data.monitor_type

 this.action_type = data.action_type

 this.meaia_url = data.media_url

 this.timer = data.timer

}

//定義原型

Alarm.prototype ={

 constructor:Alarm,

 setTitle: function (t) {

   this.title = t

 },

 setMonitorType:function(m_type){

   this.monitor_type = m_type

 },

 setActionType: function (a_type) {

   this.action_type = a_type

 },

 setMedia: function (url) {

   this.media_url = url

 },

 setTimer: function(t_name) {

   this.timer = t_name

 },

 checkLocation: function (latitude, longitude, accuracy) {

   const app = getApp()

   var that = this;

   var distance = util.getDistance(this.latitude, this.longitude, latitude, longitude)

   app.addLog(distance + "," + accuracy)

   if (distance < accuracy) {

     this.checkBuffer.push(1)

   } else {

     this.checkBuffer.push(-1)

   }

   if (this.checkBuffer.length > CHECK_BUFFER_SIZE) {

     this.checkBuffer.shift()

   }

   var sum = 0;

   that.checkBuffer.forEach(function (value) {sum += value})

   if (this.moitor_type == '接近監控點') {

     if (this.state == 'new') {

       if (sum == -CHECK_BUFFER_SIZE) {

         this.state = 'armed'

       }

     } else if (this.state == 'armed') {

       if (sum == CHECK_BUFFER_SIZE) {

         this.state = 'fired'

       }

     }

   } else {

     if (this.state == 'new') {

       if (sum == CHECK_BUFFER_SIZE) {

         this.state = 'armed'

       }

     } else if (this.state == 'armed') {

       if (sum == -CHECK_BUFFER_SIZE) {

         this.state = 'fired'

       }

     }

   }

 },

 excueteAction: function () {

   play.playVoice(this.media_url)

 },

};

module.exports = {

 Alarm:Alarm,

}

代碼說明

在alarm.js中,定義了一個名為Alarm的類。

首先定義了一個Alarm構造函數,它以一個對象data作為參數,函數的功能就是從data中取出數據并設定到相應的數據成員上。

接下來定義了一個prototype對象,它的內部又定義了若干函數。所有通過new Alarm獲得的對象都以protype中定義的內容作為原型。換言之就是都可以使用prototype中定義的函數。

最后的module.export語句定義的本模塊對外公開的功能。

函數的內容我們在后續文章中說明。

類的使用

導入類

首先需要在利用者模塊中導入Alarm類。與Alarm.js中的module.export相對應,可以使用以下的方式:

import { Alarm } from './utils/alarm.js'

創建對象,使用對象

var alarm = new Alarm({latitude:38,longitude:120})

alarm.setActionType("播放提示音")

代碼下載鏈接

alarm.js

https://raw.githubusercontent.com/xueweiguo/alarmmap/master/utils/alarm.js

上述內容就是微信小程序實戰中如何使用類優化程序結構,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台前县| 崇阳县| 富宁县| 双鸭山市| 县级市| 澜沧| 临江市| 如皋市| 延津县| 新昌县| 东城区| 米脂县| 醴陵市| 高尔夫| 赤壁市| 伊金霍洛旗| 曲阳县| 浦县| 客服| 兰西县| 郑州市| 泸州市| 枣强县| 德兴市| 南充市| 定西市| 大洼县| 苍南县| 三门县| 邯郸县| 栖霞市| 邵阳县| 江山市| 邢台市| 清水县| 华容县| 盖州市| 安多县| 湖州市| 毕节市| 东至县|