微信小程序之apply和call ( 附示例代码和注释讲解) apply call bind
微信小程序开发交流qq群 173683895
相同点:作用是一样的,它们能劫持另外一个对象的方法,继承另外一个对象的属性;
js中的call(), apply()和bind()是Function.prototype下的方法,都是用于改变函数运行时上下文,最终的返回值是你调用的方法的返回值,若该方法没有返回值,则返回undefined。
具体情况下如何选用bind()、call()、apply() 呢?
(1)如果不需要关心具体有多少参数被传入函数,选用apply();
(2)如果确定函数可接收多少个参数,并且想一目了然表达形参和实参的对应关系,用call();
(3)如果我们想要将来再调用方法,不需立即得到函数返回结果,则使用bind();
call()、apply() 、bind() 的区别:
(1)call()、apply()和bind()都是用来改变函数执行时的上下文,可借助它们实现继承;
(2)call()和apply()唯一区别是参数不一样,call()接收的是参数列表,而apply()则接收参数数组;
(3)bind()是返回一个新函数,供以后调用,而apply()和call()是立即调用。
主要区别是call()和apply()在调用函数之后会立即执行,
而bind()方法调用并改变函数运行时上下文后,返回一个新的函数,供我们需要时再调用。
使用示例场景: 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函数里面。
//group-template.js
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
}
微信小程序之apply和call ( 附示例代码和注释讲解) apply call bind相关推荐
- Laravel 微信小程序后端实现用户登录的示例代码
Laravel 微信小程序后端实现用户登录的示例代码 这篇文章主要介绍了Laravel 微信小程序后端实现用户登录的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值 ...
- 微信小程序-实现录制视频(附部分代码)
项目中,需要客户录制一段视频,上传到服务器,找了很久,终于实现了这个功能.微信小程序有两种方式可以实现录制视频. 1.使用相机的CameraContext.startRecord 2.使用官方API: ...
- html如何写微信弹窗,微信小程序 自定义弹窗实现过程(附代码)_而已_前端开发者...
这篇文章主要介绍了微信小程序 自定义弹窗实现过程(附代码),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 小程序官网里弹出框一般都是类似下面形式: ...
- python 自动化微信小程序_干货 | 微信小程序自动化测试最佳实践(附 Python 源码)...
原标题:干货 | 微信小程序自动化测试最佳实践(附 Python 源码) 本文为霍格沃兹测试学院测试大咖公开课<微信小程序自动化测试>图文整理精华版. 随着微信小程序的功能和生态日益完善, ...
- 视频教程-微信小程序开发【初级篇 / 附案例】-微信开发
微信小程序开发[初级篇 / 附案例] 北风网讲师!瓢城Web俱乐部创始人,教学总监! 李炎恢 ¥129.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 APP订阅课程, ...
- 微信小程序支付功能-服务器端实现(附源码)
实现了小程序最新的V3版本支付功能, 包括:支付.支付通知.退款.退款通知. 服务器端使用java开发,springboot框架 源码链接在评论中 微信小程序支付功能-服务器端实现(附源码)_哔哩哔哩 ...
- 微信小程序之授权登录(附完整源码)
个人博客上已经同步更新了文章,有目录索引,阅读起来比较方便,欢迎大家移步个人博客上读阅~ 个人博客地址:http://zwd596257180.gitee.io/blog/2019/04/15/wec ...
- 后退一步 小程序_微信小程序返回上一级页面的实现代码
微信小程序返回上一级页面 wx.navigateBack({ delta: 1 //返回上一级页面}) html: 保存 js: //提交 submit(){ let data = this.data ...
- 微信会员卡html修改样式模板,微信小程序 JS动态修改样式的实现代码
微信小程序这个坑啊,js动态修改样式,我们并不能用js或者jq 轻轻松松一行代码搞定.或者用removeClass addClass 来修改样式. 以下是一种动态修改样式的方法,原理是绑定数据,然后动 ...
最新文章
- 如何把本地项目上传到Github
- 李开复从不缺席的AI夏令营开营:今年周志华俞勇张潼授课,1万人报名仅600入选...
- Pandas处理Excel文件源码学习
- numpy数组的索引和切片
- spring boot源码下载地址
- 【转】飞扬青云_Qt开发经验
- ACM 题目分类POJ(自用,精)
- myeclipse8.5 离线装SVN
- 无法嵌入互操作类型 请改用适用的接口_可微编程-自上而下的产品形态 4 Python互操作性...
- 透过现象看本质:Java类动态加载和热替换
- “光伏发电改变生活” 在农村市场如何理解?
- 腾讯被深圳南山法院强制执行:执行标的25元;B站就招聘争议致歉;华为云回应是否将独立运作|极客头条...
- 第 5 章 主从复制
- 计算机系统的组成和应用,计算机系统组成与应用领域的考点
- python 算法库安装_Mahotas(Python 计算机视觉、图像处理库)安装
- 调试一个开源的车牌识别算法遇到的总结
- 【Java实例】随机数比较大小
- 迅镭激光20000瓦高速切割机顺利交付柳工,助力工程机械行业高速发展!
- Web3时代到来:非洲兄弟已经在用它“养家糊口”
- 破译肢体语言密码——王邈著