js中 this 的指向
js中 this的指向一共存在3种地方:
1.全局的this;
2.构造函数的this;
3.call/apply;
一、全局的this:
function test(){
this.d = 3;//函数的默认指向是window
var a = 1;
function c(){
}
}
test(123);
console.log(window.d);
console.log(this.d);//this 默认指向window
这里有两个点:函数的默认指向是window;全局this 指向 window;
预编译的过程:
ao:
this : window
a
c :function c(){}
go:
test :function test(){}
这里的两个console.log输出的都是3
二、构造函数中this的指向:
function Test(){
this.name = "123";
}
var test = new Test();
这里的预编译过程是这样的:
GO:Test :function Test(){};
AO:
第一次:this {window};
当new了之后: this : {name:123; __proto__:Test.prototype}
三、call/apply改变this的指向
//call/apply 改变this指向
function Person(){
this.name = "张三";
this.age = 18
}
function Programmer(){
Person.apply(this);
this.work = "Progarmming";
} var p = new Programmer();
console.log(p);
根据前面的介绍,可知:Person.apply(this);中this 是指向Programmer的实例化对象, 此处 的this也替换了Person 实例化对象;所以 最后输出就是:
{name: "张三", age: 18, work: "Progarmming"}
总结:
1.全局this 指向 window
2.预编译函数 this指向window
3.构造函数的this 指向实例化对象
4.apply/call改变this的指向
js中 this 的指向的更多相关文章
- 理解js中this的指向
学习自原文 http://www.cnblogs.com/pssp/p/5216085.html后的一点小结(原文作者总结的很棒^_^)! 关于js中this的指向,在函数定义的时候还无法 ...
- js中this的指向
在js中this的指向对于新手来说一定是个难题,但是如果你真正理解了的话,也就没什么问题啦,下面就来讲讲this吧. JS中,this的值取决于调用的模式(调用对象),而JS中共有4种调用模式: 1. ...
- JS中的this 指向问题
我发现在对JS的学习中有很多朋友对this的指向问题还是有很大的误区或者说只是大致了解,但是一旦遇到复杂的情况就会因为this指向问题而引发各种bug. 对于之前学习过c或者是Java的朋友来说可能这 ...
- 轻松了解JS中this的指向
JS中的this指向一直是个让人头疼的问题,想当初我学的是天昏地暗,查了好多资料,看的头都大了,跟他大战了那么多回合,终于把它搞定个七八分,其实往往都是我们复杂化了,现在就让大家轻松看懂this的指向 ...
- js中改变this指向的call、apply、bind 方法使用
前言: 由于js 中this的指向受函数运行环境的影响,指向经常改变,使得开发变得困难和模糊,所以在封装sdk,写一些复杂函数的时候经常会用到this 指向绑定,以避免出现不必要的问题,call.ap ...
- 彻底理解js中this的指向,不必硬背。
首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...
- 了解学习JS中this的指向
[转] 首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问 ...
- JS中this的指向问题
JS中this的定义:this对象是在运行时基于函数的执行环境绑定的(通俗点来说就是:this代表当前函数属于哪个对象). this一般情况下都代表的是global对象,在浏览器中就是window对象 ...
- Js中的this指向问题
函数中的this指向和当前函数在哪定义的或者在哪执行的都没有任何的关系分析this指向的规律如下: [非严格模式]1.自执行函数中的this永远是window [案例1] var obj={ fn:( ...
随机推荐
- DELPHI正则表达式
DELPHI正则表达式 1)下载源码 官方网站: http://www.regular-expressions.info/delphi.html 直接下载: http://www.regula ...
- HBase-概述
一种分布式.可扩展.支持海量数据存储的 NoSQL 数据库. 逻辑上,HBase 的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列.但从 HBase 的底层物理存储结构(K-V)来看,HB ...
- 整理Mac系统 node-sass 安装失败的原因及解决办法
转载与:https://segmentfault.com/a/1190000010984731 声明:本文非原创,如有侵权请留言或发邮件告知,作者会立即停止侵权并删除本文.发布此文章主要是希望跟作者遇 ...
- 21Flutter Drawer侧边栏、以及侧边栏内容布局
Tabs.dart import 'package:flutter/material.dart'; import 'tabs/Home.dart'; import 'tabs/Category.dar ...
- 阶段5 3.微服务项目【学成在线】_day07 课程管理实战_04-新增课程-数据字典
课程的等级是个单选按钮 2.3 数据字典 2.3.1介绍 在新增课程界面需要选择课程等级.课程状态等,这些信息统一采用数据字典管理的方式. 本项目对一些业务的分类配置信息,比如:课程等级.课程状态.用 ...
- Qt pri文件
pri文件就是一个简单的文件夹包含或者动态库调用路径等说明,在pro文件里include了pri文件,相当于把pri文件的内容直接复制到pro文件中
- robot用例执行常用命令(还没试)
执行命令 执行一个用例 robot -t “testcase_name“ data_test.robot 按用例文件执行 robot data_test.robot或者robot --suite “p ...
- Linux (Ubuntu)提示ifconfig:找不到命令
使用命令: sudo apt install net-tools 安装一下net-tools
- win7下docker环境安装
最近公司涉及到对docker容器引擎的使用,所以就在网上各种搜索,由于是win7系统,所以在使用上更是麻烦,遇到各种错误就是无法成功启动docker,经过两天的各种尝试下,终于安装成功,在此记录一下使 ...
- iOS技术面试08:其他
1 客户端安全性处理方式? 1> 网络数据传输(敏感数据[账号\密码\消费数据\银行卡账号], 不能明文发送) 2> 协议的问题(自定义协议, 游戏代练) 3> 本地文件存储(游戏的 ...