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 ...
随机推荐
- CAN2-CH32V307CAN2使用说明与CAN波特率计算方法
一.修改引脚 CH32V307CAN2的TX为PB13,RX为PB12 注意用CAN2时需要初始化CAN1的时钟. 二.配置CAN2过滤器开始的组(组号与图24-4相对应) 三.将FIFO0改为FIF ...
- 文献阅读01:由I类HLA转录缺失导致的联合免疫治疗的获得性癌症耐药性
背景 Merkel cell carcinoma:梅克尔细胞癌又名皮肤小梁状癌.原发性皮肤神经内分泌癌.皮肤原发性小细胞癌及皮肤APUD瘤. HLA:MHC基因产物在不同细胞表面表达,通常称之为MHC ...
- 阿里百秀后台管理项目笔记 ---- Day02
来吧展示: step1: 动态获取用户头像信息 引入 jquery.js 文件 <script src="/static/assets/vendors/jquery/jquery.js ...
- python实现通用json导入到mysql
import json from Db import Db db = Db() ''' 参考配置文件 { "file": "test.json", " ...
- DNA
思路一: 这题需要桶+哈希(简化版像A 1 B 2 ......) 具体: 先把数据输入 再枚举可能的右端点,再由右端点得到左端点(l和r相差k) 在 l到r 区间内将这一段区间哈希成一个4进制数 ...
- 力扣每日一题2023.1.19---2299. 强密码检验器 II
如果一个密码满足以下所有条件,我们称它是一个 强 密码: 它有至少 8 个字符. 至少包含 一个小写英文 字母. 至少包含 一个大写英文 字母. 至少包含 一个数字 . ...
- zookeeper 部署
官网: https://zookeeper.apache.org/ download 下载完成后 赋值文件到centos /opt/software 单机部署 解压到/opt/module tar ...
- Vue06 数据绑定
1 Vue模板语法 Vue模板语法分为两大类,插值语法和指令语法 1.1 插值语法 1)功能:用于解析标签体内容 2)写法:{{xxx}} xxx是js表达式,且可以直接读取到vue实例里面的属性 3 ...
- 0x06_自制操作系统My-OS,IDT,GDT,PIC初始化,实现键盘中断
把class03改成class04 IDT,GDT,PIC 我来介绍什么是IDT和GDT,PIC,怎么实现键盘中断 GDT全局描述表在16位CPU用不到,到了32位CPU要用. 16位CPU实模式用基 ...
- RabbitMQ 延迟消息实战
RabbitMQ 延迟消息实战 现实生活中有一些场景需要延迟或在特定时间发送消息,例如智能热水器需要 30 分钟后打开,未支付的订单或发送短信.电子邮件和推送通知下午 2:00 开始的促销活动. Ra ...