js重点--this关键字
推荐博客:https://www.cnblogs.com/huaxili/p/5407559.html
this是JavaScript的一个关键字,表示的不是对象本身,而是指被调用的上文。
主要用于以下四种环境:
1.直接调用,表示的是全局对象,window
2.作为对象方法被调用,表示的是该对象
3.作为构造函数被调用,表示的是创建的实例
4.可以使用apply(),call()改变this的表示对象,第一个参数就是this
1.直接调用,表示的是全局对象,window:
调用函数的结果是1,即this指的是全局对象,window,所以count值为全局变量的值
var count = 1;
function func(){
console.log(this.count);
}
func(); //1
2.作为对象方法被调用,表示的是该对象:
func()方法作为对象的方法被调用,此时this表示的被调用的对象obj,所以count值为obj对象中的值count,若是对象obj中没有count属性,则为undefined
var count = 1;
function func(){
console.log(this.count);
} var obj = {};
obj.count = 2;
obj.show = func; obj.show(); //2
3.作为构造函数被调用,表示的是创建的实例:
func()作为构造函数,创建了他的实例,此时this表示的是创建的实例Func
var count = 1;
function func(){
this.count = 2;
} var Func = new func();
console.log(count); //1
console.log(Func.count); //2
4.可以使用apply(),call()改变this的表示对象,第一个参数就是this:
apply()是函数对象的一个方法,它的作用是改变函数的调用对象(实则是将某某对象的某个方法放到另一个好基友对象那里去执行),它的第一个参数就表示改变后的调用这个函数的对象。因此,this指的就是这第一个参数。同call()
可以使用apply()或是call()来改变this指向。此时this表示的是obj对象
var count = 1;
function func(){
console.log(this.count);
} var obj = {};
obj.count = 2; func.call(); //1
func.call(obj); //2
5.嵌套函数作用域中的this:
嵌套函数被调用时并没有继承被嵌套函数的this引用,在嵌套函数被调用时,this指向全局对象。在有些应用中,我们需要在嵌套函数中读取调用被嵌套函数的对象的属性,此时可以声明一个局部变量保存this引用,
var count = 1;
function func(){
console.log(this.count); function func2(){
console.log(this.count);
} func2();
} var obj = {};
obj.count = 2;
obj.show = func; obj.show(); //2,1
此时,嵌套函数与被嵌套函数中的this都表示了obj对象。
var count = 1;
function func(){
console.log(this.count); var self = this;
function func2(){
console.log(self.count);
} func2();
} var obj = {};
obj.count = 2;
obj.show = func; obj.show(); //2,2
js重点--this关键字的更多相关文章
- js中this关键字测试集锦
参考:阮一峰<javascript的this用法>及<JS中this关键字详解> this是Javascript语言的一个关键字它代表函数运行时,自动生成的一个内部对象,只能在 ...
- JS中this关键字详解
本文主要解释在JS里面this关键字的指向问题(在浏览器环境下). 阅读此文章,还需要心平气和的阅读完,相信一定会有所收获,我也会不定期的发布,分享一些文章,共同学习 首先,必须搞清楚在JS里面,函数 ...
- JS 中 this 关键字详解
本文主要解释在JS里面this关键字的指向问题(在浏览器环境下). 首先,必须搞清楚在JS里面,函数的几种调用方式: 普通函数调用 作为方法来调用 作为构造函数来调用 使用apply/call方法来调 ...
- JS中的关键字和保留字
JavaScript中不能作为变量名的关键字和保留字总结: 1.js中的关键字: break case catch continue default delete do else finally fo ...
- js保留的关键字
js保留的关键字 break else new var case finally return void catch for switch while continue function this w ...
- JS实现new关键字的功能
一.前言 众所周知:没有对象怎么办?那就new一个! 那么在JS中,当我们new一个对象的时候,这个new关键字内部都干了什么呢? 现在我们就来剖析一下原生JS中new关键字内部的工作原理. 二.原始 ...
- 关于js中this关键字的补充
前面: 前面虽然综合了网络上不少大牛的心得,但感觉还是意犹未尽,为了彻底搞清楚js中this的相关知识,决定再写一篇.个人觉得,在技术上,除非钻到细枝末节,否则很难达至非常高的水平. 补充1: 无法重 ...
- Js 使用new关键字调用函数和直接调用函数的区别
最近开始学习js,在看到书上的一个例子时,引发了我的一系列思考: 书上例子: function Person(name,age,job){ var o =new Object(); o.name=na ...
- js 屏蔽政治关键字
一般情况下,用户输入评论提交到后台的同时,在后台进行关键字过滤,昨天看到了一个js关键字过滤的方法,记录下. 方法很简单,先把需要过滤的关键字做成数组, 在for循环数组判断有没有匹配. ok,先来个 ...
随机推荐
- arcgis api for js入门开发系列十九图层在线编辑
本篇主要讲述的是利用arcgis api实现图层在线编辑功能模块,效果图如下: 实现思路: 1.arcgis server发布的FeatureServer服务提供的图层在线编辑能力: 2.实现的在线编 ...
- Skyline Terra Explorer6.6弹出窗口实现复制功能
前段时间继续下来的基于Skyline的B/S项目,是基于Terra Explorer6.6实现的.项目中涉及到基于三维模型查询设备编码等操作,从用户友好角度来讲,查询到的设备编码应该要支持复制,方便用 ...
- 基于django的视频点播网站开发
项目名称 基于django的视频点播网站开发 项目背景 学习完毕python和django之后,想找个项目练练手,本来想写个博客项目练手,无奈别人已经写过了,所以笔者就打算写一个视频点播网站,因为笔者 ...
- Django 信号signal
序言 Django自带一套信号机制来帮助我们在框架的不同应用位置之间传递信息.也就是说,当某一事件发生时,信号系统可以允许一个或多个发送者(senders)将信号(signals)发送给一组接收者(r ...
- 经度和纬度在SQL中的数据类型
冬天太冷,等坐公司班车也很冷,就萌生了给班车做一个到站查询功能. 在某宝上买了汽车在线的GPS设备, 终生免费的服务的. 这里不得不提下这个设备的优点, 它提供API接口,还是免费的. 所以在班车上装 ...
- centos 7 进入图形界面
1 确保自己已经安装图形界面,如果没有请执行命令 yum groupinstall "GNOME Desktop" "Graphical Administration T ...
- java有关 String char 常见问题 编辑中
1 输入输出有关 Scanner 的next()方法 返回值是String 所以尝试获得char时 应该用input.next().charAt[0] 2 空值 String 中null是指 对象引用 ...
- VUE 简单属性操作
在main.js内配置路由及相应模板 import Vue from 'vue' import App from './App' // 引入router路由 import Router from 'v ...
- js一些梳理
浏览器组成 1.Shell部分2.内核内核的组成 1.渲染引擎 负责页面显示 2.JS引擎 3. 其他模块主流内核介绍 >> * Trident(IE内核) >> * Geck ...
- [转帖]EXPDP dumpfile和parallel的关系
http://blog.itpub.net/28602568/viewspace-2133375/ 转帖 EXPDP 里面 parallel 与 dumpfile 里面的文件数的关系. 但是我这里有一 ...