函数this指向哪个对象?
函数的this指向是根据函数调用时所处的执行环境来确定的。
this指向对象的情况有四种:
1.使用new关键字时:this会绑定构造函数所创建的对象。
function Foo(){
this.a = 1;
}
var bar = new Foo(); //此时this绑定为Foo构造函数所创建的对象。
2.使用 call, apply, bind方法调用:this 会绑定 call, apply 的第一个参数的引用对象。
function foo(){
console.log(this.name);
}
var a = {name : "i'm apply!"};
var b = {name : "i'm bind!"};
var c = {name : "i'm call!"};
foo.apply(a); //此时this 绑定在a对象;
foo.bind(b); //此时this 绑定在b对象;
foo.call(c); //此时this 绑定在c对象;
3.在某个上下文的对象中被调用:this绑定所处上下文对象。
4.默认绑定:this 在 “严格模式下为”:undefined, “非严格模式下”绑定全局对象。
function foo(){
console.log(this.name);
}
var f = {
name: "i'm foo!",
foo: foo
}
f.foo() // 此时this绑定在foo对象;
var name = "window";
foo() //此时this默认绑定全局对象;
函数this指向哪个对象?的更多相关文章
- call和apply第一个参数为null/undefined,函数this指向全局对象
call和apply第一个参数为null/undefined,函数this指向全局对象,在浏览器中是window,在node中是global 在严格模式中(ie 6/7/8/9 除外),传入null/ ...
- 严格模式下顶层箭头函数this指向的是全局对象
我们知道普通函数调用,this在非严格模式下指向全局对象,在严格模式下是undefined.那箭头函数呢?我们知道,箭头函数没有自己的this,它的this是最近外层非箭头函数的this,那直接在顶层 ...
- Javascript 中的this 指向的对象,你搞清楚了吗?
Javascript 中的this 总让人感到困惑,你能分清以下三种test1(),test2(),test3() 情况下的输出吗? 注:以下Javascript运行环境中为浏览器 //1 this在 ...
- 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, const 对象的引用
[源码下载] 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, con ...
- JavaScript学习09 函数本质及Function对象深入探索
JavaScript学习09 函数本质及Function对象深入探索 在JavaScript中,函数function就是对象. JS中没有方法重载 在JavaScript中,没有方法(函数)重载的概念 ...
- C++ —— 非常量引用不能指向临时对象
目录 举例 分析 解决 1.举例 非常量引用 指向 临时对象 —— 即:将 临时对象 传递给 非常量引用类型. 如以下情况就会出现: 实现实数Rational类,实数可以使用+号相加,运算的结果要可以 ...
- es6箭头函数 this 指向问题
es5中 this 的指向 var factory = function(){ this.a = 'a'; this.b = 'b'; this.c = { a:'a+', b:function(){ ...
- 5. 箭头函数_this 指向_es6 常用语法
1. 箭头函数 函数的简写方式 () => {} 只有一个参数时,可以省略() ---- x => {} 只有一条语句时,可以省略{},此时这点语句的结果会作为函数的返回值返回 () = ...
- const对象,指向const对象的指针 和 const 指针
const对象: const对象声明时必须赋初值,该值在编译阶段确定,不可在程序中修改. const修饰符既可放在类型名前也可放在类型名后,通常放在类型名前.不过放在类型名后易于理解. const i ...
随机推荐
- MSSQL复制表数据及表结构
目标表存在: insert into 目标表 select * from 原表 目标表不存在: select * into 目标表 from 原表 复制表结构 select * into 目标表 fr ...
- <每日 1 OJ> -LeetCode 13 . 罗马数字转正数
题目: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1 ...
- js数组reduce()方法的使用和一些应用场景
reduce()的使用 reduce()方法为归并类方法,最常见的应用场景就是,计算数组中每一项的总和. reduce()方法会遍历数组的每一项,它接收两个参数: 第一个参数是:每次遍历都会调用的函数 ...
- 【Dubbo】带着问题看源码:什么是SPI机制?Dubbo是如何实现的?
什么是SPI? 在Java中,SPI全称为 Service Provider Interface,是一种典型的面向接口编程机制.定义通用接口,然后具体实现可以动态替换,和 IoC 有异曲同工之妙. ...
- VLC搭建RTSP服务器
实时流协议 RTSP 是在实时传输协议的基础上工作的,主要实现对多媒体播放的控制.用户对多媒体信息的播放.暂停.前进和后退等功能就是通过对实时数据流的控制来实现的. 而这些播放控制功能的实现不仅需要多 ...
- 修改jar包中的文件
1.用WinRAR压缩软件打开jar包 2.将修改过的文件直接拖拽并覆盖被替换的文件即可
- mysql知识集锦
1.mysql中InnoDB引擎中页的概念 2.mysql索引详解--如何从磁盘中读取索引文件
- C# winform选择文件、选择文件夹、打开文件
文章来自博客园友,这里只是做一下笔记. 来源:https://www.cnblogs.com/liuqifeng/p/9149125.html 一.选择文件用OpenDialog OpenFileDi ...
- Linux的tmpfs和ramfs
tmpfs tmpfs是一种虚拟内存文件系统, 它的存储空间在VM里面,现在大多数操作系统都采用了虚拟内存管理机制, VM(Virtual Memory) 是由Linux内核里面的VM子系统管理. V ...
- ps 渐进式图片的技巧(支持jpg,gif,png)
https://www.zhangxinxu.com/wordpress/2013/01/progressive-jpeg-image-and-so-on/ CTRL + SHIFT + ALT + ...