ES5 绑定 this 的方法
this的动态切换,固然为 JavaScript 创造了巨大的灵活性,但也使得编程变得困难和模糊。有时,需要把this固定下来,避免出现意想不到的情况。JavaScript 提供了call、apply、bind这三个方法,来切换/固定this的指向。
1 1、函数实例的call方法,可以指定函数内部this的指向(即函数执行时所在的作用域),然后在所指定的作用域中,调用该函数。
2 var obj = {};
3
4 var f = function () {
5 return this;
6 };
7
8 f() === window // true
9 f.call(obj) === obj // true
10
11
12 2、apply方法的作用与call方法类似,也是改变this指向,然后再调用该函数。唯一的区别就是,它接收一个数组作为函数执行时的参数,使用格式如下。
13 function f(x, y){
14 console.log(x + y);
15 }
16
17 f.call(null, 1, 1) // 2
18 f.apply(null, [1, 1]) // 2
19
20 3、bind()方法用于将函数体内的this绑定到某个对象,然后返回一个新函数。
21 var counter = {
22 count: 0,
23 inc: function () {
24 this.count++;
25 }
26 };
27
28 var func = counter.inc.bind(counter);
29 func();
30 counter.count // 1
ES5 绑定 this 的方法的更多相关文章
- jquery 绑定事件的方法
jQuery中提供了四种绑定事件的方法,分别是bind.live.delegate.on,对应的解除监听的函数分别是unbind.die.undelegate.off: 一.on()方法(首选方法) ...
- JavaScript绑定事件的方法[3种]
在JavaScript中,有三种常用的绑定事件的方法: 在DOM元素中直接绑定: 在JavaScript代码中绑定: 绑定事件监听函数. 一. 在DOM元素中直接绑定 这里的DOM元素,可以理解为HT ...
- 《JS权威指南学习总结--7.9 ES5中的数组方法》
内容要点: ES5中定义了9个新的数组方法来遍历.映射.过滤.检测.简化和搜索数组. 概述:首先,大多数方法的第一个参数接收一个函数,并且对数组的每个元素(或一个元素)调用一次该函数. 如果是稀疏数组 ...
- GridView等表格模板列绑定数据的方法
//绑定GridView每一行中的CheckBoxList protected void GridView1_RowDataBound(object sender, GridViewRowEventA ...
- elementui command绑定变量对象方法
command绑定变量对象方法 使用v-bind : command绑定 简写 :command
- Android studio button 按钮 四种绑定事件的方法
package com.geli_2.sujie.sujiegeili2testbutton; import android.os.Bundle; import android.support.v7. ...
- JavaScript中,有三种常用的绑定事件的方法
要想让 JavaScript 对用户的操作作出响应,首先要对 DOM 元素绑定事件处理函数.所谓事件处理函数,就是处理用户操作的函数,不同的操作对应不同的名称. 在JavaScript中,有三种常用的 ...
- SpringMVC3,使用RequestMappint的Param参数,实现一个url绑定多个方法
SpringMVC中,默认不能把多个相同的url绑定到同一个方法.如果需要绑定,需要增加param参数,而且值要不同. 我自己没有这个需求,或者就是有需求,我也想到的是使用不同的url. 项目中有少部 ...
- Linux 绑定 ttyUSBn 串口方法。
Linux 绑定 ttyUSBn 串口方法. 在linux下, 使用usb转串口, 经常会碰到一个问题: 如果有多个串口, 以不同顺序插入的时候, /dev/ttyUSB0 /dev/ttyUSB1的 ...
- 25 JavaScript对象原型&ES5新的对象方法
JavaScript对象原型 所有JavaScript对象都从原型继承对象和方法 日期对象继承自Date.prototype,数组继承自Array.prototype,对象构造器新建的对象Person ...
随机推荐
- 【学习笔记】开源库之 - sigslot (提供该库存在对象拷贝崩溃问题的解决方案)
介绍说明 学习 QT 的时候,觉得 QT 提供的信号槽机制非常有用,这种机制可以解决对象与对象之间通信中的耦合问题,原本想从网络上了解一下具体的实现思路用于项目中,意外的发现了用 C++ 实现的信号槽 ...
- Monkey 命令
1) 参数: -p 参数-p用于约束限制,用此参数指定一个或多个包(Package,即App).指定 包之后,Monkey将只允许系统启动指定的APP.如果不指定包,Monkey将允许系统启动设备中 ...
- @mapper注解
1.标记这是一个映射接口,这样子写还是需要写xml文件 package com.atguigu.springcloud.dao; import com.atguigu.springcloud.enti ...
- 【LeetCode字符串#06】KMP巩固练习:重复子串
重复的子字符串 力扣题目链接(opens new window) 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且长度不超过10000. 示例 1: ...
- 一文看懂 Python 中的函数参数
函数定义中的参数也就是形式参数,规定了在调用函数时如何传递实际参数以及这些参数有无默认值. 实参传递方式 def f(a): print(a) 实参传递方式有两种,位置和关键字.对于上面定义的函数 f ...
- Android 初代 K-V 存储框架 SharedPreferences,旧时代的余晖?
本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 前言 大家好,我是小彭. SharedPreferences 是 Android 平台上轻量级的 K-V ...
- Cesium之影像底图加载
1. 引言 Cesium是一款三维地球和地图可视化开源JavaScript库,使用WebGL来进行硬件加速图形,使用时不需要任何插件支持,基于Apache2.0许可的开源程序,可以免费用于商业和非商业 ...
- Python批量读取HDF多波段栅格数据并绘制像元直方图
本文介绍基于Python语言gdal模块,实现多波段HDF栅格图像文件的读取.处理与像元值可视化(直方图绘制)等操作. 另外,基于gdal等模块读取.tif格式栅格图层文件的方法可以查看Pyt ...
- LeetCode-540 有序数组中单一元素
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/single-element-in-a-sorted-array 题目描述 给你一个仅由整数组成的 ...
- java-tocsv
1.依赖 <dependencies> <dependency> <groupId>org.apache.poi</groupId> <artif ...