正文:
apply和call
相同点:作用是一样的,它们能劫持另外一个对象的方法,继承另外一个对象的属性;
不同点:call(obj,valueName1,valueName2) 对象和参数名 apply(obj,[]) 对象和数组;
使用示例场景: apply和call在小程序中可以实现在公共方法js里面修改当前js的AppData的数据;
代码示例:
示例一: call使用
const app = getApp()
var group = require('../group-template/group-template.js');
Page({
onLoad: function (options) {
var countDown_time = '00:21:03'
group.Init.call(this, countDown_time); //登录
}
})
注释:使用call把onLoad的this(当前对象)和 countDown_time 变量传给了 group-template.js 文件的Init函数里面。
function Init(countDown_time) {
var that = this;
// 倒计时
var time = countDown_time.split(':')
var hhh = parseInt(time[0])
var mmm = parseInt(time[1])
var sss = parseInt(time[2])
var Interval = setInterval(function () {
if (sss > 0) {
sss--
} else {
console.log('时间到')
clearInterval(Interval)
}
if (sss == 0) {
if (mmm > 0) {
mmm--
sss = 59;
}
if (mmm == 0 && hhh > 0) {
hhh--
sss = 59;
mmm = 59;
}
}
that.setData({
sss: (sss < 10) ? '0' + sss : sss,
mmm: (mmm < 10) ? '0' + mmm : mmm,
hhh: (hhh < 10) ? '0' + hhh : hhh
})
}, 1000)
}
module.exports = {
Init: Init
}
实现功能:通过setInterval和call实现了一个倒计时功能
示例一: apply使用
const app = getApp()
var group = require('../group-template/group-template.js');
Page({
data: {
countDown_time: '00:21:03'
},
onLoad: function (options) {
group.Init.apply(this, []); //登录
}
})
//group-template.js
function Init() {
var that = this;
// 倒计时
var time = that.data.countDown_time.split(':')
var hhh = parseInt(time[0])
var mmm = parseInt(time[1])
var sss = parseInt(time[2])
var Interval = setInterval(function () {
if (sss > 0) {
sss--
} else {
console.log('时间到')
clearInterval(Interval)
}
if (sss == 0) {
if (mmm > 0) {
mmm--
sss = 59;
}
if (mmm == 0 && hhh > 0) {
hhh--
sss = 59;
mmm = 59;
}
}
that.setData({
sss: (sss < 10) ? '0' + sss : sss,
mmm: (mmm < 10) ? '0' + mmm : mmm,
hhh: (hhh < 10) ? '0' + hhh : hhh
})
}, 1000)
}
module.exports = {
Init: Init
}