js中this的绑定规则及优先级】的更多相关文章

一.   this绑定规则 函数调用位置决定了this的绑定对象,必须找到正确的调用位置判断需要应用下面四条规则中的哪一条. 1.1 默认绑定 看下面代码: function foo() { console.log(this.a); } var a = 1; foo(); // 2 调用foo的时候,this应用了默认绑定,this指向了全局对象,但是在严格模式下,那么全局对象将无法进行默认绑定,因此this会绑定到undefined function foo() { 'use strict';…
JavaScript中this的绑定规则 前言 我们知道浏览器运行环境下在全局作用域下的this是指向window的,但是开发中却很少在全局作用域下去使用this,通常都是在函数中进行使用,而函数使用不同方式进行调用,其this的指向是不一样的.JavaScript中函数在被调用时,会先创建一个函数执行上下文(FEC),而这个上下文中记录着函数的调用栈.活动对象(AO)以及this等等.那么this到底指向什么呢?下面一起来看看this的四个绑定规则. 1.this四个绑定规则 1.1.默认绑定…
这篇文章详细介绍了js中的前绑定和后绑定,有需要的朋友可以参考一下 其主要意思就是看我有没有用过前绑定,即Dom树中的某些元素在还没有创建出来时,就指定该类型的元素一出生就应该拥有的某些事件.在实际开发过程中经常会涉及到前绑定和后绑定.顾名思义,前绑定——还未出生即绑定了某些事件,后绑定——出生后才会绑定的某些事件.下面,通过一个简单的例子进行阐述,以供大家参考,并对各个方法进行比较:页面元素: <div id="main"> <a href="#"…
人们对于this的绑定常常有两个误解,一:指向函数本身,二:指向函数作用域.这两种想法都是错的,this并不指向函数本身,也不指向函数作用域. function foo(){ this.count++; } foo.count = 0; for(var i = 0 ; i<5 ; i++){ foo(); } alert( foo.count ); 因为this不指向函数本身,所以foo.count的值依然是0. function foo(){ var a = 1 ; alert(this.a)…
问题: js中如果同一个onclick绑定了两个js方法问题,即 <li onclick="f1(),f2()"></li> 两个方法f1,f2中都分别有一个ajax请求. 测试发现,经常有一个或两个ajax请求异常,通常是 显示状态码都是200请求成功,但是实际上,浏览器收不到返回参数,这就造成js报错  data is null 等等. 而且,在java后台,往前台写入json数据的方法也经常会报错,比如: flush writer流时出错620015:AP…
1 直接在html标签中绑定 <button onclick = "show()"></button> 注意当你引用的js代码是包裹在window.onload中的形式的时候,show()是会报没有定义的错误,原因在于window.onload是在 页面全部加载完之后再去解析加载里面的内容.而button的点击事件在解析button的时候没有被定义. 2 用js的对象进行绑定事件 <body> <buttonid="btn1"…
判定this new绑定:新建对象; var bar = new foo(); 明确绑定(call.apply,bind):指定对象; var bar = foo.call(obj) 隐含绑定:环境对象(或容器对象); var bar = obj2.foo(); 默认绑定:strict模式是undefined,否则是全局对象(浏览器是windows,node环境是global) var bar = foo(); 被忽略的 this 如果你传递 null 或 undefined 作为 call.a…
    关于变量提升,以前在一些教程和书籍上都听到过,平时开发中也知道有这个规律,但是今天突然在一个公开课中听到时,第一反应时一脸懵逼,然后一百度,瞬间觉得好熟悉啊,差点被这个概念给唬住了,不信我给你看个栗子,你也会恍然大悟的: (function(){ console.log(v); var v = 'I love you'; console.log(v); })() // undefined I love you     这就是一个典型的变量提升的例子了,规则是怎样的呢,我的理解是在一个作用…
普通事件指的是可以用来注册的事件: 事件绑定是指把事件注册到具体的元素之上. 通俗点说: 普通事件:给html元素添加一个特定的属性(如:onclick): 事件绑定:js代码中通过标记(id  tag class)获取元素,给元素添加特定的方法(如:onclick): 扩展:事件监听addEventListener事件可以绑定多次事件,并进行触发 div1.onclick = function(){}; <button onmouseover = " "></but…
事件绑定 要想让 JavaScript 对用户的操作作出响应,首先要对 DOM 元素绑定事件处理函数.所谓事件处理函数,就是处理用户操作的函数,不同的操作对应不同的名称. 在JavaScript中,有三种常用的绑定事件的方法: 在DOM元素中直接绑定: 在JavaScript代码中绑定: 绑定事件监听函数. 在DOM中直接绑定事件 我们可以在DOM元素上绑定onclick.onmouseover.onmouseout.onmousedown.onmouseup.ondblclick.onkeyd…