首页
学习
活动
专区
圈层
工具
发布

【javascript】函数中的this的四种绑定形式 — 大家准备好瓜子,我要讲故事啦~~

javascript中的this和函数息息相关,所以今天,我就给大家详细地讲述一番:javascript函数中的this 一谈到this,很多让人晕晕乎乎的抽象概念就跑出来了,这里我就只说最核心的一点...——函数中的this总指向调用它的对象,接下来的故事都将围绕这一点展开 (提醒前排的筒子们准备好茶水和西瓜,我要开始讲故事啦!!)...【注意】在这个例子中, obj.fire()的调用实际上使用到了this的隐式绑定,这就是下面我要讲的内容,这个例子我接下来还会继续讲解 【总结】 凡事函数作为独立函数调用,无论它的位置在哪里,它的行为表现...(函数并不被这个外部对象所“完全拥有”) 我想表达的意思是:在上文中,函数虽然被定义在对象的内部中,但它和“在对象外部声明函数,然后在对象内部通过属性名称的方式取得函数的引用”,这两种方式在性质上是等价的...fn仍然能够通过this去取得obj内部的a属性,但实际上, this对obj的绑定早已经丢失了,所以输出的是全局的a的值(2),而不是obj内部的a的值(1) 在一串对象属性链中,this绑定的是最内层的对象

88570
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    jQuery基础

    jQuery冲突问题 使用jQuery时, $ 是访问jQuery的标志,但是如果有其他方法与jQuery中的 $冲突时,可以释放$的使用权 ,还可以自定义一个符号来代替 $使用。...中的each方法和 map方法都是用来遍历数组的方法 第一个参数:要遍历的数组 第二个参数:每遍历到一个元素后执行的回调函数 回调函数的参数...中each静态方法和map静态方法的区别 1.each静态方法默认的返回值就是,遍历谁就返回谁 map静态方法默认的返回值是一个空数组 2.each静态方法不支持在回调函数中对遍历的数组进行处理...,不会覆盖 事件解绑 $().off() 如果不传递参数,会移除所有的事件 如果传递一个参数,会移除所有指定类型的事件 如果传递两个参数,会移除所有指定类型的指定事件 示例 jQuery中如果通过核心函数找到的元素不知一个,那么在添加事件的时候,jQuery 会遍历所有找到的元素,给所有找到的元素添加事件 *

    2.2K20

    前端面试官问闭包,怎样回答脱颖而出

    出于种种原因,我们有时候需要得到函数内的局部变量。那就是在函数的内部,再定义一个函数。 3.你能写一个闭包出来吗?...它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。 5.闭包解决了什么问题?...优点:简单好用; 缺点:闭包使用不当可能造成内存泄露; 因为闭包中引用到的包裹函数中定义的变量永远不会被释放,所以我们应该在必要的时候,及时释放这个闭包函数。 7.内存泄露是什么?...1,在退出函数之前,将不使用的局部变量赋值为null; 2,避免变量的循环赋值和引用。 3,利用Jquery释放自身指定的所有事件处理程序。...由于jQuery考虑到了内存泄漏的潜在危害,所以它会手动释放自己指定的所有事件处理程序。 只要坚持使用jQuery的事件绑定方法,就可以一定程度上避免这种特定的常见原因导致的内存泄漏。

    1.1K10

    使用Require.js实现模块化开发

    在javascript中,我们把比较复杂的都是用模块化,今天我们就来了解一下require.js来实现模块化开发 require.js是什么?...代码,我们主要看script标签,导入了require.js然后还有个data-main属性,这属性指定在加载完 reuqire.js 后,就用 requireJS 加载该属性值指定路径下的 JS 文件并运行...require函数 此函数就是用于加载模块和依赖的,加载完成后会只想回调函数,回调函数中的参数要和前面的模板的顺序一致。我这里就把paths里配置了4个模块都加载了。...延生(全局配置):所谓全局配置,就是配置只需要设置一次,我们这篇的入口文件是main.js。难道我们要把整个项目的js都写在main.js中吗?...延生(非amd规范): 非amd规范的模块就是不是使用define来定义的模块,和没有主动return返回你需要的函数这种类型的js。

    3.1K10

    4000字讲清 《深入理解TypeScript》一书 【基础篇】

    Type类型的约束、不确定情况下的提示、在代码编写阶段就能知道自己的错误 这三点我认为是最关键的点,本身TypeScript能做的事情,JavaScript都能做,虽然使用TS要多写很多代码,但是其实真正算下来...它自然被分配的一些例子: 一个从来不会有返回值的函数(如:如果函数内含有 while(true) {}); 一个总是会抛出错误的函数(如:function foo() { throw new Error...,never 表示一个从来不会优雅的返回的函数时,你可能马上就会想到与此类似的 void,然而实际上,void 表示没有任何类型,never 表示永远不存在的值的类型。...当一个函数没有返回值时,它返回了一个 void 类型,但是,当一个函数根本就没有返回值时(或者总是抛出错误),它返回了一个 never,void 指可以被赋值的类型(在 strictNullChecking...,而在 TypeScript 中,为防止初学者砸伤自己的脚(我总是看到 stackoverflow 上有很多 JavaScript 使用者都会这样。)

    2.6K30

    jQuery 自定义网页滚动条样式插件 mCustomScrollbar 的介绍和使用方法

    就上述示例代码来说,我们应该在页面中定义一个 class 为 content 的 内容块。...加上的样式很简单,就是定义一个宽或者高或者宽高都定义,然后再定义一个 overflow 值为 auto。这样如果内容超出了指定的宽高,就会出现一个滚动条。...:String:滚动动作类型 查看 jquery UI easing 可以看到所有的类型 mouseWheel:String/Boolean:鼠标滚动的支持 值为:true.false,像素 默认的情况下...:{ scrollType:String }:滚动按钮滚动类型 值:"continuous"(当你点击滚动控制按钮时断断续续滚动) "pixels"(根据每次点击的像素数来滚动) 点击这里可以看到形象的例子...:{ onScrollStart:function(){} }:使用自定义的回调函数在滚动时间开始的时候执行 具体请看Demo callbacks:{ onScroll:function(){} }:自定义回调函数在滚动中执行

    16.5K30

    架构 | 到底该不该使用JavaScript框架

    一些事情可以自己来做 考虑一下简单的HTTP请求,曾经是一段50行的函数,就可以在 Firefox 和 Internet Explorer 中完成简单的GET搞作。...它的设计是否良好?也许不是。它是健壮的吗?这仅仅是为了我们当前的需要。它的意义不在于它是或者是什么,而更多需要思考的是我为什么要使用其他的框架。 如果我不想编写自己的HTTP请求引擎,也会有很多选择。...如果我花了一个小时(这是我们花在代码和测试上的时间)来实现这个功能以满足我所有的需求,那么与集成一个库来来实现同样的功能相比,会节省很多时间吗?对此我们每个人都会有不同的答案。...jQuery之所以被编写出来,是因为浏览器的差异性非常大,而 JavaScript API 对此能做的事情太少了。...但是如果你正在修建摩天大楼,那么就必须做更多的规划。我们应该在哪里画一条线?框架的作用与你正在使用建筑材料和建筑风格的作用是一样的。它是否适合环境,以后可以在需要时替换材料吗?

    61310

    jQuery笔试题汇总整理--2018

    ,并调用执行绑定的函数 3、你知道jQuery中的选择器吗,有哪些选择器 大致分为:基本选择器,层次选择器,表单选择器 基本选择器:id选择器,标签选择器,类选择器等 层次选择器:如:$("form input...: $("p").append("你好") 我想说:你好 appendTo:将所有匹配的元素追加到指定的元素中...我想说: $("p").prepend("你好") 你好我想说: prependTo:将所有匹配的元素前置到指定的元素中...JSON最常见的用法之一,是从web服务器上读取JSON数据,将JSON数据转换为JavaScript对象,然后在网页中使用该数据. 14、说出jQuery中常见的几种函数以及他们的含义是什么?   ...Ajax的核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。

    3.3K21

    JavaEE中为删除数据操作与退出操作添加确认提示框

    用户删除与用户退出 以删除指定empId的员工为例 一、js方式 1、在jsp界面中,找到删除按钮所在的地方,为其添加超链接javascript:delEmp('${emp.empId'},代表点击删除时调用...3、完善业务层、servlet代码中的删除操作。 ps: 如果没有值的传递可以考虑直接为href添加id(但有值传递只能采取前面的方式),然后通过jquery实现,举例如下。...以用户退出为例 1、添加id属性 2、通过jquery添加相应的函数 以删除指定empId的员工为例 一、js方式 1、在jsp界面中,找到删除按钮所在的地方,为其添加超链接javascript:delEmp...注意: 如果需要传入的值时int类型,则在使用el表达式调用时,外部可以不加单引号。 而如果传入的值时string类型,则需要在其外部加单引号。...2、通过jquery添加相应的函数 ?

    2.5K40

    全网最新、最全的jQuery核心知识,你真的不想点开看看嘛?

    放的是用js代码写的function() --> (函数) jQuery官网介绍 :jQuery是一个快速、小且功能丰富的JavaScript库。...val函数 (常用) 操作数组中 DOM 对象的 【value 属性】 $(选择器).val() :无参数调用形式, 读取数组中第一个 DOM 对象的 value 属性值 $(选择器).val(值):...选择器).append(" 我动态添加的 div ") 可以增加任意的页面元素 13.2.6 html函数 设置或返回被选元素的内容(相当于JS中innerHTML)。...我们主要用的是 json的值。 jQuery 从 xml, json, text,, html 这些中测试最可能的类型。...dataType 是一个字符串类型,对应的value值要加双引号 error : 一个function函数,表示请求发生错误时,执行的函数。

    8K10

    前端-学习JavaScript是一种什么样的体验?

    不知道你在说什么……你说了太多我听不懂的名词了。我只是想从服务器取点数据,我以前用 jQuery 挺好的,从 CDN 引入 jQuery,我就能用 AJAX 获取数据了,现在不能这样做吗?...是的,你不能在生产环境上运行 babel,你应该在发布到生产环境之前,运行一系列的任务,包括压缩、混淆、内联化CSS、延迟加载script…… 我懂了我懂了。...我们不是在说 JavaScript 吗?! Typescript 也是 JavaScript 呀,它比 JS 更好用,是 JS 的超集,它是基于 ES6 的,就是我们刚才谈论的 ES6,你还记得吧。...是一个静态类型检查器,就是 Facebook 的人写的。使用 OCaml 写的,函数式编程很叼的。 OCaml?函数式编程?...但是由于我要用函数式编程和强类型语言,所以我首先要用上 Typescript 或者 Flow。 对的。 如果我要用 await,那我就必须用 Babel 转译。 对的。

    1.6K30

    最常见的 20 个 jQuery 面试问题及答案

    这是 jQuery 提供的众多操控 DOM 的方法中的一个。你可以通过 appendTo() 方法在指定的 DOM 元素末尾添加一个现存的元素或者一个新的 HTML 元素。   10....而 this 代表当前元素,它是 JavaScript 关键词中的一个,表示上下文中的当前 DOM 元素。你不能对它调用 jQuery 方法,直到它被 () 函数包裹,例如   12....你如何使用jQuery设置一个属性值? (答案)   前面这个问题之后额外的一个后续问题是,attr()方法和jQuery中的其它方法一样,能力不止一样....这是 jQuery 提供的众多操控 DOM 的方法中的一个。你可以通过 appendTo() 方法在指定的 DOM 元素末尾添加一个现存的元素或者一个新的 HTML 元素。   10....而 this 代表当前元素,它是 JavaScript 关键词中的一个,表示上下文中的当前 DOM 元素。你不能对它调用 jQuery 方法,直到它被 () 函数包裹,例如   12.

    15.3K30

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

    值传递、引用传递、解释型、编译型 我知道你知道,JS 值有两大类型:基本类型和引用类型。基本类型按值传递,引用类型按引用传递。非常优秀,背的简直不要太熟,但你有想过为什么要这么划分吗?...这种传递值的方式叫做共享传递 Stack Overflow 的解释:对于传递到函数参数的对象类型,如果直接改变了拷贝的引用的指向地址,那是不会影响到原来的那个对象;如果是通过拷贝的引用,去进行内部的值的操作...为了不让程序员费心分配内存,JavaScript 在定义变量时就完成了内存分配。———— MDN (os:还用我说什么吗?“JS是最好的语言”打在评论中。)...JQuery 很多函数/方法都是XSS接收器。所以说在我们用 JQuery 时,必须注意对 DOM 所做的更改以及传递,不要相信用户的任何输入,常升级 JQuery 版本等。...⭐ JavaScript深入之参数按值传递 Cross-site Scripting (XSS) jquery_htmlPrefilter_xss 如何实施一次XSS攻击 html-vs-innerhtml-jquery-javascript-xss-attacks

    92330

    什么是jQuery?

    javascript"> //$()表示定位指定的标签 function $(str){ //获取str变量的类型 var type = typeof...each():是jQuery中专用于迭代数组的方法,参数为一个处理函数,this表示当前需要迭代的js对象 Jquery事件API JavaScript一大特性就是事件驱动,当用户用了执行了某些动作以后...focus:焦点获取 select:选中所有的文本值 keyup/keydown/keypress:演示在IE和Firefox中获取event对象的不同 mousemove:在指定区域中不断移动触发...: 回调函数中参数一:backData表示返回的数据,它是js对象 回调函数中参数二:textStatus表示返回状态的文本描述,例如:success,error, 回调函数中参数三:xmlHttpRequest...$.ajax()这个方法接收的参数是一个JSON类型,JSON里面有几个参数: type【请求类型】 url【请求路径】 data【发送给服务器的数据,也是一个JSON类型】 success【回调函数】

    4K70

    jquery面试题目_高并发面试题

    大家好,又见面了,我是你们的朋友全栈君。 1. jQuery 库中的 $() 是什么?(答案如下) () 函数是 jQuery() 函数的别称,乍一看这很怪异,还使 jQuery 代码晦涩难懂。...JavaScript window.onload 事件和 jQuery ready 函数有何不同?(答案) 这个问答是紧接着上一个的。...这是 jQuery 提供的众多操控 DOM 的方法中的一个。你可以通过 appendTo() 方法在指定的 DOM 元素末尾添加一个现存的元素或者一个新的 HTML 元素。 10....而 this 代表当前元素,它是 JavaScript 关键词中的一个,表示上下文中的当前 DOM 元素。你不能对它调用 jQuery 方法,直到它被 () 函数包裹,例如 12....你如何使用jQuery设置一个属性值? (答案) 前面这个问题之后额外的一个后续问题是,attr()方法和jQuery中的其它方法一样,能力不止一样.

    10.4K10

    第8章 JavaScript编程应用

    简单性:它的变量类型是采用弱类型,并未使用严格的数据类型 动态性:JavaScript是动态的,它可以直接对用户或客户输入做出响应,无须经过Web服务程序 跨平台性:JavaScript是依赖于浏览器本身...statement 1:用于指定要执行的语句序列。当expression的值为true时,执行该语句序列。statement 2:用于指定要执行的语句序列。...这需要设置个问题吗?而且,也不应该整在这里介绍此语法,水了水了。 8-4 jQuery框架是什么?它有什么作用?...jQuery是一个轻量级的JavaScript框架,它提供一种渐变的JavaScript设计模式,可优化HTML5文档操作,改变用户编写JavaScript代码的方式。...据我所知,jQuery 也是被在淘汰的路上。了解了解即可。 8-5 简述JavaScript中变量的命名规则。

    75210
    领券