博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jquery第四课 Javascript中this的使用方法
阅读量:7207 次
发布时间:2019-06-29

本文共 1839 字,大约阅读时间需要 6 分钟。

thiskeyword的使用

在JavaScript中使用thiskeyword表示调用方法的对象,这与大部分面向对象语言是一样的。可是因为callapplybind等函数的影响。我们能够改变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

callapply的差别是,apply接收两个參数:this和函数的參数数组;而call的第一个參数为this,可是后面是函数的參数列表。

本文档由整理。

转载于:https://www.cnblogs.com/gavanwanggw/p/6848718.html

你可能感兴趣的文章
【问题汇总】ListView的FooterView设置可见性的问题
查看>>
JAVA中int、String的类型转换
查看>>
[翻译]opengl扩展教程2
查看>>
命令行上的narrowing(随着输入逐步减少备选项)工具
查看>>
基于Hadoop 2.6.0运行数字排序的计算
查看>>
J2EE的13个规范之(二) JDBC 及其使用
查看>>
【iOS开发-74】解决方式:Xcode6下利用preference保存数据,终于的plist文件在哪里?...
查看>>
JSTL fmt 格式化时间
查看>>
WCF学习之旅—WCF概述(四)
查看>>
PHP AJAXFORM提交图片上传并显示图片源代码
查看>>
CentOS安装mysql*.rpm提示conflicts with file from package的解决的方法
查看>>
PostgreSQL代码分析,查询优化部分,canonicalize_qual
查看>>
PHPSession-完全PHP5之session篇
查看>>
Linux下mysql备份 恢复
查看>>
iOS 开发-单元测试
查看>>
[TypeScript] Installing TypeScript and Running the TypeScript Compiler (tsc)
查看>>
VMware: linux起步提示 memory for crashkernel(0*0 to 0*0)not within permissible
查看>>
使用.NET Framework的配置文件app.config
查看>>
图算法之最小生成树
查看>>
drop table big_table 调试
查看>>