微信小程序开发交流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相关推荐

  1. Laravel 微信小程序后端实现用户登录的示例代码

    Laravel 微信小程序后端实现用户登录的示例代码 这篇文章主要介绍了Laravel 微信小程序后端实现用户登录的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值 ...

  2. 微信小程序-实现录制视频(附部分代码)

    项目中,需要客户录制一段视频,上传到服务器,找了很久,终于实现了这个功能.微信小程序有两种方式可以实现录制视频. 1.使用相机的CameraContext.startRecord 2.使用官方API: ...

  3. html如何写微信弹窗,微信小程序 自定义弹窗实现过程(附代码)_而已_前端开发者...

    这篇文章主要介绍了微信小程序 自定义弹窗实现过程(附代码),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 小程序官网里弹出框一般都是类似下面形式: ...

  4. python 自动化微信小程序_干货 | 微信小程序自动化测试最佳实践(附 Python 源码)...

    原标题:干货 | 微信小程序自动化测试最佳实践(附 Python 源码) 本文为霍格沃兹测试学院测试大咖公开课<微信小程序自动化测试>图文整理精华版. 随着微信小程序的功能和生态日益完善, ...

  5. 视频教程-微信小程序开发【初级篇 / 附案例】-微信开发

    微信小程序开发[初级篇 / 附案例] 北风网讲师!瓢城Web俱乐部创始人,教学总监! 李炎恢 ¥129.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 APP订阅课程, ...

  6. 微信小程序支付功能-服务器端实现(附源码)

    实现了小程序最新的V3版本支付功能, 包括:支付.支付通知.退款.退款通知. 服务器端使用java开发,springboot框架 源码链接在评论中 微信小程序支付功能-服务器端实现(附源码)_哔哩哔哩 ...

  7. 微信小程序之授权登录(附完整源码)

    个人博客上已经同步更新了文章,有目录索引,阅读起来比较方便,欢迎大家移步个人博客上读阅~ 个人博客地址:http://zwd596257180.gitee.io/blog/2019/04/15/wec ...

  8. 后退一步 小程序_微信小程序返回上一级页面的实现代码

    微信小程序返回上一级页面 wx.navigateBack({ delta: 1 //返回上一级页面}) html: 保存 js: //提交 submit(){ let data = this.data ...

  9. 微信会员卡html修改样式模板,微信小程序 JS动态修改样式的实现代码

    微信小程序这个坑啊,js动态修改样式,我们并不能用js或者jq 轻轻松松一行代码搞定.或者用removeClass addClass 来修改样式. 以下是一种动态修改样式的方法,原理是绑定数据,然后动 ...

最新文章

  1. 如何把本地项目上传到Github
  2. 李开复从不缺席的AI夏令营开营:今年周志华俞勇张潼授课,1万人报名仅600入选...
  3. Pandas处理Excel文件源码学习
  4. numpy数组的索引和切片
  5. spring boot源码下载地址
  6. 【转】飞扬青云_Qt开发经验
  7. ACM 题目分类POJ(自用,精)
  8. myeclipse8.5 离线装SVN
  9. 无法嵌入互操作类型 请改用适用的接口_可微编程-自上而下的产品形态 4 Python互操作性...
  10. 透过现象看本质:Java类动态加载和热替换
  11. “光伏发电改变生活” 在农村市场如何理解?
  12. 腾讯被深圳南山法院强制执行:执行标的25元;B站就招聘争议致歉;华为云回应是否将独立运作|极客头条...
  13. 第 5 章 主从复制
  14. 计算机系统的组成和应用,计算机系统组成与应用领域的考点
  15. python 算法库安装_Mahotas(Python 计算机视觉、图像处理库)安装
  16. 调试一个开源的车牌识别算法遇到的总结
  17. 【Java实例】随机数比较大小
  18. 迅镭激光20000瓦高速切割机顺利交付柳工,助力工程机械行业高速发展!
  19. Web3时代到来:非洲兄弟已经在用它“养家糊口”
  20. 破译肢体语言密码——王邈著

热门文章

  1. 解决keepalived脑裂问题
  2. Spark2 ML 学习札记
  3. Python之路【第五篇】:面向对象及相关
  4. mongoDB 入门指南、示例
  5. javascript 基础篇2 数据类型,语句,函数
  6. 写得不错的几篇C/C++博客
  7. 解密淘宝网的开源架构(转)
  8. 合理估算线程池线程数量
  9. 【CSDN2012年度博客之星】需要您的一票,感谢大家的支持
  10. Cassandra安装测试