首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

“‘this”指的是函数内部的某些东西,而不是对象(jQuery)

"this"指的是函数内部的某些东西,而不是对象(jQuery)。

在JavaScript中,关键字"this"用于引用当前执行的函数所属的对象。它在不同的上下文中具有不同的值,取决于函数是如何被调用的。

当函数作为对象的方法被调用时,"this"指向该对象本身。例如:

代码语言:javascript
复制
var obj = {
  name: "John",
  sayHello: function() {
    console.log("Hello, " + this.name);
  }
};

obj.sayHello(); // 输出:Hello, John

在上面的例子中,当调用obj.sayHello()时,"this"指向了obj对象,因此可以通过"this"访问到obj对象的属性。

然而,当函数作为独立函数调用时,"this"指向全局对象(在浏览器中为window对象)。例如:

代码语言:javascript
复制
function sayHello() {
  console.log("Hello, " + this.name);
}

var name = "John";
sayHello(); // 输出:Hello, John

在上面的例子中,当调用sayHello()时,"this"指向了全局对象,因此可以通过"this"访问到全局变量name的值。

此外,"this"的值还可以通过使用call()apply()bind()方法来显式地指定。这些方法允许我们在调用函数时指定函数内部的"this"的值。

总结起来,"this"关键字在JavaScript中用于引用当前执行的函数所属的对象。它的值取决于函数的调用方式和上下文。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

是否还在疑惑Vue.js中组件data为什么是函数类型不是对象类型

分析Vue.js组件中data为何是函数类型而非对象类型 引言 正文 一、Vue.js中data使用 二、data为对象类型 三、data为函数 结束语 引言 要理解本篇文章,必须具备JavaScript...然后想在图上添加什么东西,只需要再创建一个文件,在该文件中创建一个Vue实例,但不通过el进行挂载,而是直接通过注册方式,注册到另一个页面,作为别的页面的一部分,例如图中样子。...这是因为这两个实例对象在创建时,是先获得了一个函数,将该函数返回值作为了自己属性data值,并且这两个实例对象中data值在栈中对应堆中地址也不一样,所以他们不会互相影响。...因为我们刚开始定义了构造函数Vue时,给他内部data设置了一个值,该值为对象类型,对象类型在js中称为引用数据类型,在栈中是存储着一个指向内存中该对象堆中地址。...因为本文也是说到构造函数创建实例对象概念,如果对于JavaScript中对象概念不理解的话,也可以翻阅我之前写一篇文章,全面剖析了js中对象概念——充分了解JavaScript中对象,顺便弄懂你一直不明白原型和原型链

3.4K30

框架篇-Vue面试题1-为什么 vue 组件中 data 是函数不是对象

在vue组件中data属性值是函数,如下所示 export default { data() { // data是一个函数,data: function() {}简写 return...// data是一个对象 name: 'itclanCoder', }, }; 当一个组件被定义,data必须声明为返回一个初始数据对象函数,因为组件可能被用来创建多个实例 也就是说,在很多页面中...,定义组件可以复用在多个页面 如果data是一个纯碎对象,则所有的实例将共享引用同一份data数据对象,无论在哪个组件实例中修改data,都会影响到所有的组件实例 如果data是函数,每次创建一个新实例后...,调用data函数,从而返回初始数据一个全新副本数据对象 这样每复用一次组件,会返回一份新data数据,类似于给每个组件实例创建一个私有的数据空间,让各个组件实例各自独立,互不影响,保持低耦合 可以看下面一段代码...,实例化出来对象(p1,p2)都指向是同一份实体 原型下属性相当于是公有的 修改一个实例对象属性,也会造成另一个实例属性跟着改变,这样在组件复用时候,肯定是不行,那么改成函数就可以了,如下代码所示

1.9K20

jquery中attr()和prop()区别

: 18}; 7 在jQuery中,prop()函数设计目标是用于设置或获取指定DOM元素(指的是JS对象,Element类型)上属性(property);attr()函数设计目标是用于设置或获取指定...3、用于设置属性值类型不同 由于attr()函数操作是文档节点属性,因此设置属性值只能是字符串类型,如果不是字符串类型,也会调用其toString()方法,将其转为字符串类型。...prop()函数操作是JS对象属性,因此设置属性值可以为包括数组和对象在内任意类型。...并且,在某些版本中,这些属性值表示文档加载时初始状态值,即使之后更改了这些元素选中(或禁用)状态,对应属性值也不会发生改变。...,对于DOM对象自身布尔值类型属性,只能 // 通过这个两个方法来设置或者读取默认值,不能动态改变值 // // prop ==> dom.checked = true; // 对于 布尔值属性

1.9K20

教你开发jQuery插件(转) 教你开发jQuery插件(转)

第一种方式又太简单,仅仅是在jQuery命名空间或者理解成jQuery身上添加了一个静态方法而以。...:$('a'),则this=$('a') this.css('color', 'red'); } 在插件名字定义这个函数内部,this指代是我们在调用该插件时,用jQuery选择器选中元素...下面进一步,在插件代码里处理每个具体元素,不是对一个集合进行处理,这样我们就可以针对每个元素进行相应操作。...如果将需要重要变量定义到对象属性上,函数变成对象方法,当我们需要时候通过对象来获取,一来方便管理,二来不会影响外部命名空间,因为所有这些变量名还有方法名都是在对象内部。...,只需向对象添加新变量及方法即可,然后在插件里实例化后即可调用新添加东西

3.3K10

献给前端求职路上你们(下)

2,2不是0,1,因为等for循环出来后,执行setTimeout中函数时,i值已经变成了2....谈谈This对象理解 this是js一个关键字,随着函数使用场合不同,this值会发生变化。 但是有一个总原则,那就是this指的是调用函数那个对象。...JavaScript作用域指的是变量作用范围,内部作用域由函数形参,实参,局部变量,函数构成,内部作用域和外部作用域一层层链接起来形成作用域链,当在在函数内部要访问一个变量时候,首先查找自己内部作用域有没有这个变量...(4) 当需要设置样式很多时设置className不是直接操作style。 (5) 少用全局变量、缓存DOM节点查找结果。减少IO读取操作。...图片采用整合 images.png png8 格式文件使用 尽量整合在一起使用方便将来管理 说说最近最流行一些东西吧?常去哪些网站?

1.1K60

多种前端框架优缺点「建议收藏」

6、不污染顶级变量:JQuery只建立一个名为JQuery对象,其所有的函数方法都在这个对象之下。其别名$也可以随时交流控制权,绝对不会污染其他对象。...相反,JQuery方法都被设计成自动操作对象集合,不是单独对象,这使得大量循环结构变得不再必要,从而大幅度地减少代码量。...同时,后期维护也非常方便,不需要在HTML代码中寻找某些函数和重复修改HTML代码。...缺点: 1、不能向后兼容:每一个新版本不能兼容早期版本。举例来说,有些新版本不再支持某些selector,新版jQuery却没有保留对它们支持,只是简单将其移除。...这虽然不是jQuery自身问题,但却又确实是一个难于调试和解决问题。 4、jQuery稳定性:jQuery没有让浏览器崩溃,这里指的是其版本发布策略。

3.6K20

九、函数函数式编程

虽然该匿名函数没有显示进行赋值操作,我们没有办法在外部执行上下文中引用到它,但是在fn函数内部,我们将该匿名函数赋值给了变量bar,保存在了fn变量对象arguments对象中。...但是我们从结果中看到,person对象并未发生任何改变,因此只是在函数内部引用被修改而已。 四、函数式编程 虽然JavaScript并不是一门纯函数式编程语言,但是它使用了许多函数式编程特性。...函数既然能够作为一个参数传入另外一个函数,那么我们是不是可以直接将delay作为setTimeout第一个参数,不用额外多加一层匿名函数呢? 因此,其实最正确解法应该这样写。...这并不是理想效果。函数式编程期望一个函数有输入,也有输出。因此良好习惯应该如下做。...所谓"副作用"(side effect),指的是函数内部与外部互动(最典型情况,就是修改全局变量值),产生运算以外其他结果。

60720

【翻译】JavaScript内存泄露

JavaScript内存管理 JavaScript内存管理核心概念:可达性(reachability) 所谓可达性指的是一些可被全局作用域访问到对象(原文:A distinguished set...内存泄露 内存泄露指的是浏览器因为种种原因没有回收无用对象占用内存。 内存泄露原因可能是浏览器bug,或者浏览器扩展插件问题,但是更多时候,是因为我们代码结构不严谨。...: 异步对象XHR会被浏览器跟踪,产生一个对它内部引用。...比如每次请求创建函数,它们不被回收因为它们是监听器或者其他有用东西。 如果外层变量只被外层函数使用不被内层函数引用,这样变量可以通过设置null来节省内存。...这个API目的是令DOM节点不产生对JavaScript对象直接引用。用一个安全数字来标识。被设置data属性在jQuery.cache中,内部事件监听也是通过$.data()API驱动。

2.1K60

Node.js介绍

注:这一点是动态语言特征,并不是弱类型语言特征,之前回答有误。 ② 函数可变。...③ 对象成员可变,可以动态添加、删除成员属性或成员方法。 弱类型指的是js中变量在参与运算时候可以根据实际需要动态转换类型。...如此仓促开发,js自然有一些先天不足,但同时也具备了基于弱类型动态语言方便灵活、对象原型继承、函数是一种特殊对象等优秀特性,于是越来越得到广泛应用,语言自身也在标准化组织推动下不断发展进步。...jQuery出现解决了那个各方面标准尚未统一混乱时代许多问题,让js应用更加广泛,并为未来某些标准制定指明了方向。...实际上,JSON用于客户端(包括浏览器)与服务端通讯时候,主要指的是服务器端返回处理结果时送回给客户端数据格式是JSON。客户端提交给服务器端数据大多数并不是XML或JSON格式

1.4K00

前端之jQuery

丰富DOM选择器,jQuery选择器用起来很方便,比如要找到某个DOM对象相邻元素,JS可能要写好几行代码,jQuery一行代码就搞定了,再比如要将一个表格隔行变色,jQuery也是一行代码搞定...// DOM对象使用DOM方法 2.1jQuery对象与原生JS对象(标签对象)相互转换 $() 查找都是数组形式(内部才是一个个原生js对象) 通过索引取值方式 就能拿到原生js对象...prop和attr区别: attr全称attribute(属性) prop全称property(属性) 虽然都是属性,但他们所指属性并不相同,attr所指属性是HTML标签属性,prop所指的是...DOM对象属性,可以认为attr是显式prop是隐式。...undefined,prop获取是这个DOM对象属性,因此checked为false。

4.9K21

继续死磕前端

肯定有人会问如何下载之类问题,其实我很不愿意回答,毕竟这些随意百度到东西很浪费时间和文字,但是秉承着服务宗旨,贴出以下链接: 1、http://jquery.com/ 官方网站 2、https:/...this 指的是原生对象 ... // 使用 jquery 对象用 $(this) }; js 对象jquery 对象有些许不同,jquery 对象是对 js 对象封装,然后让其拥有了...DOM 对象jquery 对象: $(js对象) jquery 对象转 DOM 对象jQuery对象[index]; //方式1 (推荐使用) jQuery对象.get(index);...这只是一种机制,但是我们并不是任何情况下都需要,那么可以将其关掉。...ajax 技术原理是实例化 xmlhttp 对象,使用此对象与后台通信。jquery 将它封装成了一个函数 $.ajax(),我们可以直接用这个函数来执行ajax请求。 此部分超级重要!超级重要!

2.8K10

jQuery源码研究:模块规范兼容

对象以供使用;否则仅暴露出给定抛出错误工厂函数,比如Nodejs环境 非第一种情况时,则执行匿名函数体中factory( global ),并在工厂函数中进行AMD判断、命名冲突检测和全局暴露等操作...module.exports 初始值为一个空对象 {} exports 是指向 module.exports 引用 require() 返回是 module.exports 不是 exports...AMD模块规范: 通过异步加载模块,模块加载不是影响后面语句运行,所有依赖某些模块语句块放置在回调函数中。 AMD 规范只定义了一个函数 define,通过 define 方法定义模块。...该文件内部所有变量,外部无法获取,如果如果你希望外部能够读取模块内部某个变量,就必须使用export关键字输出该变量 export 命令用于规定模块对外接口,通常情况下,export输出变量就是本来名字...CommonJS、AMD等模块规范倒是向下兼容更好,jQuery中兼容好用,其中CommonJS多用于服务端,AMD则用于浏览器端,其中代表性实现是RequireJS。

1.1K30

前端状态管理设计——优雅与妥协艺术

如果一开始就大书特书我们是基于redux,想加持光环,那么得到结果必然是,如若不是真的好用到爆炸,断然收不到好评。...,而这些内部状态变化我们无法收集到,因此,也就无法重放由于组件内部状态变化带来界面变化,一旦无法重放界面变化,就会出现问题,因为DOM变化具有副作用,下一个DOM树基础是上一个DOM树,如果某些变化没有发生...,后续变化所依赖DOM节点可能根本就不存在,应用会报错;2)在状态中,我们不可避免使用某些实例对象,基于class实例对象有内存依赖,我们无法将它们保存到服务器端,再从服务器端拉出来进行回放。...函数差不多,写出上千行代码也不是不可能,到时候没人敢动这个组件。...不过,vue组件定义不仅仅包含这些东西,同时还有生命周期函数,子组件引用,props,视图事件回调函数等等东西,而这些东西整体,又是为视图编程服务,因此,最终它和模型也只是插肩而过。

1.5K20

Web前端学习笔记之JavaScript、jQuery、AJAX、JSON区别

注:这一点是动态语言特征,并不是弱类型语言特征,之前回答有误。 ② 函数可变。...③ 对象成员可变,可以动态添加、删除成员属性或成员方法。 弱类型指的是js中变量在参与运算时候可以根据实际需要动态转换类型。...如此仓促开发,js自然有一些先天不足,但同时也具备了基于弱类型动态语言方便灵活、对象原型继承、函数是一种特殊对象等优秀特性,于是越来越得到广泛应用,语言自身也在标准化组织推动下不断发展进步。...XMLHttpRequest在早期IE浏览器里是使用ActiveX来实现,并不是浏览器自身对象。...,不仅有便捷性差距,而且前一种写法可以在声明变量同时为变量赋值,后一种写法则不行,这会影响到类属性初始化操作:在c# 2.0中,只能把针对Dictionary之类复杂对象初始化代码写在函数里,不能直接写在类属性声明处

2.1K20

前端面试宝典 v1

同时需要注意是:闭包慎用,不滥用,不乱用,由于函数内部变量都被保存在内存中,会导致内存消耗大。 59、说说你对this理解?...执行say667()后,say667()闭包内部变量会存在,闭包内部函数内部变量不会存在.使得Javascript垃圾回收机制GC不会收回say667()所占用资源,因为say667()内部函数执行需要依赖...(4) 当需要设置样式很多时设置className不是直接操作style。 (5) 少用全局变量、缓存DOM节点查找结果。减少IO读取操作。...考察学习知识态度,是否仅仅是停留在使用层面,要知其然知其所以然 2、jQuery.fninit方法返回this指的是什么对象?为什么要返回this?...注意:empty() 只检测变量,检测任何非变量东西都将导致解析错误。换句话说,后边语句将不会起作用; 2、isset函数 用途:检测变量是否设置 判断:检测变量是否设置,并且不是 NULL。

2.4K41

初识React

React则另辟蹊径地解决了这些问题。...首先要知道React并不是一个完整MVC,MVVM框架,其只负责View层,React设计团队并不认为MVC设计模式仍适用于某些场景下开发,所以才有了围绕React一系列理念。...React理念 在继续深入学习React其他知识之前,我们先实现一个简单ClickCounter组件,通过这个简单组件思考一下React工作方式,要了解一样东西特点,最好方法当然是拿这个东西和另一样东西做比较...打一个比方,React是一个聪明建筑工人,jQuery是一个比较傻建筑工人,开发者你就是一个建筑设计师,如果jQuery这个建筑工人为你工作,你不得不事无巨细地告诉jQuery“如何去做”,要告诉他这面墙要拆掉重建...这个函数是一个纯函数,所谓纯函数指的是没有任何副作用,输出完全依赖于输入函数,两次函数调用如果输入相同,得到结果也绝对相同。

67120

前端阿瓜每周速记(2020 第 34 周)

webSite 指针相同,o 是 webSite 指针副本,修改 o.siteUrl 会改变原指针,直接修改 o ,不会改变原指针。...这种传递值方式叫做共享传递 Stack Overflow 解释:对于传递到函数参数对象类型,如果直接改变了拷贝引用指向地址,那是不会影响到原来那个对象;如果是通过拷贝引用,去进行内部操作...JQuery 很多函数/方法都是XSS接收器。所以说在我们用 JQuery 时,必须注意对 DOM 所做更改以及传递,不要相信用户任何输入,常升级 JQuery 版本等。...按需引入和预先加载 按需引入其实就是“延迟加载”,等到需要用时候再加载。 预先加载是“提前加载”,把要用东西先加载准备好。 这二者之前平衡,决定了 webpack 打包策略。...编译时加载 后者指的是 webpack import,动态地加载模块。

64430

你没有抓住 Promises 要点

var promiseForTweets = getTweetsFor("domenic"); 这个就很有用了,因为你可以把 promise 当做一等公民来对待了:传值给他,聚合对它们调用等等,不是搞一堆耦合在一起回调函数来完成你逻辑...但是人们不怎么理解第二段,恰恰是最重要。 那么 Promises 要点是啥? 最重要是,promises 根本就不是简单回调函数聚合。...promises 并不是那么简单东西,它是一种为同步函数和异步函数提供直接一致性模式。 啥意思呢?...在将要到来 ECMAScript 6 版本中,使用了一些内部技巧,大多数情况下代码还是一样。...这就解释了第一段关键:函数应当返回一个新 promise 对象JQuery(1.8 以前版本)却不这么做。他们只是继续使用原有的 promise 对象,但是把它状态改变一下而已。

61210

jquery jQuery快速入门

丰富DOM选择器,jQuery选择器用起来很方便,比如要找到某个DOM对象相邻元素,JS可能要写好几行代码,jQuery一行代码就搞定了,再比如要将一个表格隔行变色,jQuery也是一行代码搞定...: attr全称attribute(属性) prop全称property(属性) 虽然都是属性,但他们所指属性并不相同,attr所指属性是HTML标签属性,prop所指的是DOM对象属性,可以认为...undefined,prop获取是这个DOM对象属性,因此checked为false。...,它作用范围只限于HTML标签内属性,prop获取是这个DOM对象属性,选中返回true,没选中返回false。....each() 方法用来迭代jQuery对象每一个DOM元素。每次回调函数执行时,会传递当前循环次数作为参数(从0开始计数)。

16.2K50

WordPress 通过模板文件和自带函数引入 cssjs 两种方法

> 参数: $handle(字符串,必需)是你样式表唯一名称。其他函数将使用这个“handle”来排队并打印样式表。 $src(字符串,必需)指的是样式表URL。...有时候我们可能会在 wp_footer 函数出现之前就需要用到某些 JavaScript,比如 jquery.js 文件。 这样情况也是很常见。...以上面的情景为例,既然我们需要先调用 jquery.js 文件,那我们就在该代码段之前直接输出需要 jquery.js 文件,不使用 wp_enqueue_script() 函数改用 wp_print_scripts...wp_print_scripts() 则直接在你使用此方法位置输出需要 JavaScript 文件,不是加入到 WordPress 处理任务中。 如果我们在页面的中间使用 直接输出了 jquery.js 文件(通常是其压缩版本 jquery.min.js),那么即使其它插件或者什么东西使用,<?

1.7K30
领券