Jquery第四课 Javascript中this的使用方法
this
keyword的使用
在JavaScript中使用this
keyword表示调用方法的对象,这与大部分面向对象语言是一样的。可是因为call
、apply
、bind
等函数的影响。我们能够改变this
所代指的对象。
- 使用
call
或者apply
调用的函数中,this
代指传入的第一个參数对象,假设传入null
或者undefined
。则表示全局对象(window
)。 - 通过对象调用函数(方法),函数中的
this
表示调用该函数的对象。 - 单独调用的函数中
this
表示全局对象。
var myObject = {
sayHello: function() {
console.log("Hi, my name is " + this.myName);
},
myName: "Rebecca"
};
var secondObject = {
myName: "Colin"
};
myObject.sayHello(); //"Hi, my name is Rebecca"
myObject.sayHello.call(secondObject); //"Hi, my name is Colin"
var myName = "the global object";
var sayHello = function() {
console.log("Hi, my name is " + this.myName);
};
var myObject = {
myName = "Rebecca"
};
var myObjectHello = sayHello.bind(myObject);
sayHello(); //"Hi, my name is the global object"
myObjectHello(); //"Hi, my name is Rebecca"
JavaScript能够在执行中为对象动态加入函数,这样也会导致this
代指的对象发生变化。
var myName = "the global object";
var sayHello = function() {
console.log("Hi, my name is " + this.myName);
};
var myObject = {
myName: "Rebecca"
};
var secondObject = {
myName: "Colin"
};
myObject.sayHello = sayHello;
secondObject.sayHello = sayHello;
sayHello(); //"Hi, my name is the global object"
myObject.sayHello(); //"Hi, my name is Rebecca"
secondObject.sayHello(); //"Hi, my name is Colin"
还有。不能直接给处于较深的名字空间的函数添加短引用,会导致this
变为全局对象,可是能够对它所处的对象设置短引用。
var myNamespace = {
myObject: {
sayHello: function() {
console.log("Hi, my name is " + this.name);
},
myName: "Rebecca"
}
};
var hello = myNamespace.myObject.sayHello;
hello(); //"Hi, my name is undefined"
var obj = myNamespace.myObject;
obj.sayHello(); //"Hi, my name is Rebecca"
Tips
call
与apply
的差别是,apply
接收两个參数:this
和函数的參数数组;而call
的第一个參数为this
,可是后面是函数的參数列表。本文档由长沙戴维营教育整理。
Jquery第四课 Javascript中this的使用方法的更多相关文章
- Jquery中$(document).ready()与传统JavaScript中的window.onload方法的区别(2016/8/3)
Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的. 1.执行时间 ...
- Jquery中$(document).ready() 和 JavaScript中的window.onload方法 比较
Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的. 1.执行时间 win ...
- JavaScript中事件绑定的方法总结
最近收集了一些关于JavaScript绑定事件的方法,汇总了一下,不全面,但是,希望便于以后自己查看. JavaScript中绑定事件的方法主要有三种: 1 在DOM元素中直接绑定 2 JavaScr ...
- JavaScript中Object.prototype.toString方法的原理
在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. ? 1 2 var arr = []; console.lo ...
- JavaScript中this的使用方法总结
JavaScript中this的使用方法总结 在JavaScript中,this的使用分为四种场景,具体请参考阮一峰老师关于this的讲解 第一种情况是纯函数使用 var x =1 ; functio ...
- Javascript中alert</script>的方法
Javascript中alert</script>的方法: <%@ page language="java" import="java.util.*&q ...
- URL地址中中文乱码详解(javascript中encodeURI和decodeURI方法、java.net.URLDecoder.encode、java.net.URLDecoder.decode)
引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息.乱码问题就此产生了,该如何解决呢?且听本文详细道来. ...
- javaScript中的indexOf使用方法
JavaScript中的indexOf使用方法 概述 indexOf大小写敏感,其中的O要大写 对于字符串而言 indexOf返回字符串第一次出现的位置,若没有出现返回-1 1 var str = & ...
- Javascript中定时器的使用方法
Javascript中定时器的使用方法 1.间隔定时器(每隔一段时间执行一次代码) 格式:setInterval(函数,时间) //时间单位是毫秒,每隔设置的时间执行函数里的内容一遍(一直执行) // ...
随机推荐
- 所有的工作目录 都要svn_开头,并且要进行svn同步,你能保证你不删除,你保证不了非你!
所有的工作目录 都要svn_开头,并且要进行svn同步,你能保证你不删除,你保证不了非你! 血的代价啊~
- vue中axios发送post请求,后端(@RequestParam)接不到参数
遇到的问题描述 :axios post 请求,后端接收不到参数. 我们的接口是java,用@RequestParam来接收前端的参数 解决方案:使用qs:axios中已经包含有qs,所以无需重新安装, ...
- add list of symbols -- latex
* add list of symbols -- latexinclude a *toc.tex* file in the *main.tex* in *main.tex*#+BEGIN_SRC la ...
- JqueryValidate 修改 为根据ID验证
<!--修改validate根据ID验证 --> <script type="text/javascript"> if ($.validator) { $. ...
- Spring Boot 2(一):【重磅】Spring Boot 2.0权威发布
就在今天Spring Boot2.0.0.RELEASE正式发布,今天早上在发布Spring Boot2.0的时候还出现一个小插曲,将Spring Boot2.0同步到Maven仓库的时候出现了错误, ...
- maven项目运行tomcat7-maven-plugin:run时出现Caused by: java.lang.ClassNotFoundException: org.codehaus.plexus.util.Scanner(xjl456852原创)
使用tomcat7-maven-plugin插件运行web项目时, 出现下面错误: [WARNING] Error injecting: org.sonatype.plexus.build.incre ...
- STM32F407 开发环境搭建 程序下载 个人笔记
详细资料: http://www.openedv.com/thread-13912-1-1.html 需要安装的软件: 1.keil(MDK,必选),用keygen破解 2.CH340驱动,(usb串 ...
- Qt笔记——各种组件和其他细碎用法
LineEdit 获取文本:ui->usrLineEdit->text() 清空内容:ui->pwdLineEdit->clear(); 定位光标:ui->usrLine ...
- set/multiset用法详解
集合 使用set或multiset之前,必须加入头文件<set> Set.multiset都是集合类,差别在与set中不允许有重复元素,multiset中允许有重复元素. sets和mul ...
- POJ-20407Relatives/NYOJ-333mdd的烦恼,欧拉函数简单应用,模板A
poj Relatives Time Limit: 1000MS Memory Li ...