js中this的绑定】的更多相关文章

这篇文章详细介绍了js中的前绑定和后绑定,有需要的朋友可以参考一下 其主要意思就是看我有没有用过前绑定,即Dom树中的某些元素在还没有创建出来时,就指定该类型的元素一出生就应该拥有的某些事件.在实际开发过程中经常会涉及到前绑定和后绑定.顾名思义,前绑定——还未出生即绑定了某些事件,后绑定——出生后才会绑定的某些事件.下面,通过一个简单的例子进行阐述,以供大家参考,并对各个方法进行比较:页面元素: <div id="main"> <a href="#"…
一.   this绑定规则 函数调用位置决定了this的绑定对象,必须找到正确的调用位置判断需要应用下面四条规则中的哪一条. 1.1 默认绑定 看下面代码: function foo() { console.log(this.a); } var a = 1; foo(); // 2 调用foo的时候,this应用了默认绑定,this指向了全局对象,但是在严格模式下,那么全局对象将无法进行默认绑定,因此this会绑定到undefined function foo() { 'use strict';…
问题: 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"…
普通事件指的是可以用来注册的事件: 事件绑定是指把事件注册到具体的元素之上. 通俗点说: 普通事件:给html元素添加一个特定的属性(如:onclick): 事件绑定:js代码中通过标记(id  tag class)获取元素,给元素添加特定的方法(如:onclick): 扩展:事件监听addEventListener事件可以绑定多次事件,并进行触发 div1.onclick = function(){}; <button onmouseover = " "></but…
人们对于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)…
事件绑定 要想让 JavaScript 对用户的操作作出响应,首先要对 DOM 元素绑定事件处理函数.所谓事件处理函数,就是处理用户操作的函数,不同的操作对应不同的名称. 在JavaScript中,有三种常用的绑定事件的方法: 在DOM元素中直接绑定: 在JavaScript代码中绑定: 绑定事件监听函数. 在DOM中直接绑定事件 我们可以在DOM元素上绑定onclick.onmouseover.onmouseout.onmousedown.onmouseup.ondblclick.onkeyd…
大家都知道,IE中的现代事件绑定(attachEvent)与W3C标准的(addEventListener)相比存在很多问题, 例如:内存泄漏,重复添加事件并触发的时候是倒叙执行等. 下面是用传统事件的方法来处理封装事件的绑定: 添加事件绑定事件: addEvent.ID = 1; // 事件计数器 function addEvent(obj, type, fn){ if(obj.addEventListener){ obj.addEventListener(type, fn, false);…
在JavaScript的学习中,我们经常会遇到JavaScript的事件机制,例如,事件绑定.事件监听.事件委托(事件代理)等.这些名词是什么意思呢,有什么作用呢? 事件绑定 要想让 JavaScript 对用户的操作作出响应,首先要对 DOM 元素绑定事件处理函数.所谓事件处理函数,就是处理用户操作的函数,不同的操作对应不同的名称. 在JavaScript中,有三种常用的绑定事件的方法: 在DOM元素中直接绑定: 在JavaScript代码中绑定: 绑定事件监听函数. 在DOM中直接绑定事件…
转载请注明出处:http://www.cnblogs.com/zhangmingze/p/4864367.html   ● 事件分为三个阶段:   事件捕获 -->  事件目标 -->  事件冒泡   ● 事件捕获:事件发生时(onclick,onmouseover……)首先发生在document上,然后依次传递给body.……最后到达目的节点(即事件目标). ● 事件冒泡:事件到达事件目标之后不会结束,会逐层向上冒泡,直至document对象,跟事件捕获相反   1.onlick -->…
最近在深入实践js中,遇到了一些问题,比如我需要为动态创建的DOM元素绑定事件,那么普通的事件绑定就不行了,于是通过上网查资料了解到事件委托,因此想总结一下js中的事件绑定与事件委托. 事件绑定   最直接的事件绑定:HTML事件处理程序 如下示例代码,通过节点属性显式声明,直接在HTML中,显式地为按钮绑定了click事件,当该按钮有用户点击行为时,便会触发myClickFunc方法. /* html */ <button id="btn" onclick="myCl…
本文是原创文章,如需转载,请注明文章出处 在工作中,有时会有这样的需求:在一个页面上添加了6个按钮,然后分别为他们绑定点击事件监听器,当点击按钮1时,输出1,当点击按钮2时,输出2. 循环绑定代码如下: for (var i = 1, i <= 6; ++i){ var btn = document.getElementById("btn" + i); btn.addEventListener("click", function(){ console.log(…
以下是搜集的在JS中事件绑定的三种方式.   1. HTML onclick attribute     <button type="button" id="upload" onclick="upload_file();">   原文: http://www.w3school.com.cn/jsref/jsref_events.asp   2. jQuery .on() $(node).on("change", f…
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div> <button id="btn">按钮</button> </div> <script&g…
1. 1 我们看到的变量,其实都不是独立的,它们都是windows对象上的属性 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta ht…
Angular.js 中的特性,双向绑定. 让视图的改变直接反应到数据中,数据的改变又实时的通知到视图,如何做到的? 这要归功于 scope 下面3个重要的方法: $watch $digest $apply 他们的区别是什么,我们来介绍下: $watch 这是一个监听 scope 上数据的监听器 方法说明: $scope.$watch('参数',function(newValue,oldValue){ //逻辑处理 }) 上面我们就是创建了一个监听器. ‘参数’ 就是$scope对象下的一个对象…
在JS中,绑定的事件默认的执行时间是在冒泡阶段执行,而非在捕获阶段(重要),这也是为什么当父类和子类都绑定了某个事件,会先调用子类绑定的事件,后调用父类的事件.直接看下面实例 <!Doctype html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> *{margin:0;p…
this的绑定方式基本有以下几种: 隐式绑定 显式绑定 new 绑定 window 绑定 箭头函数绑定 隐式绑定 第一个也是最常见的规则称为 隐式绑定. var a = { str: 'hello', sayHi() { console.log(this.str) } } a.sayHi() a 调用sayHi,所以this指向了对象a 我们来看一个类似但稍微高级点的例子. var wrapper = { name: 'user1', sayName() { console.log(this.n…
this ES6中的箭头函数采用的是词法作用域. 为什么要使用this:使API设计得更简洁且易于复用. this即不指向自身,也不指向函数的词法作用域. this的指向只取决于函数的调用方式 this绑定规则 new > 显示绑定 > 隐式绑定 > 默认绑定 默认绑定 当独立函数调用时,不管是否在调用栈中,this都指向全局对象(浏览器中为window) 严格模式下,不能将全局对象用于默认绑定. var a = 2; function foo(){ console.log(this.a…
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div> <button id="btn">按钮</button> </div> <script&g…
单选框:<input type="checkbox" id="checkbox" v-model="checked"><label for="checkbox">{{ checked }}</label>checked = true & false多选框: <div id="app">   <div v-bind:style="{col…
IE8中使用attachEvent绑定事件处理函数时,不能直接向event 对象添加数据属性.可以用属性复制的方法,包装新的event对象. 1. 属性复制var ObjectExtend = function(destination, source) {   for (var property in source) {    destination[property] = source[property];   }   return destination;}; 2. 绑定事件var atta…
关于js中的this this是javascript中一个很特别的关键字,也是一种很复杂的机制,学习this的第一步就是要明白this既不指向函数自身也不指向函数的词法作用域,this实际上是函数被调用时发生的绑定,它指向什么完全取决于函数在哪里被调用. 1. 调用位置 现在来说一下调用位置:调用位置就是函数在代码中被调用的位置(而不是声明的位置). 那么怎么找到它的调用位置呢?最重要的是要分析“调用栈”(就是为了到达当前执行位置所调用的所有函数) function baz(){ //当前调用栈…
参考:阮一峰<javascript的this用法>及<JS中this关键字详解> this是Javascript语言的一个关键字它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.定义:this是包含它的函数作为方法被调用时所属的对象.总原则,this指的是,调用函数的那个对象,this永远指向函数运行时所在的对象!而非创建时的. 以下是基于浏览器环境做的测试: 作为函数调用: function $(){ this.count = 1; return this; } wi…
怎么理解js中的事件委托 时间 2015-01-15 00:59:59  SegmentFault 原文  http://segmentfault.com/blog/sunchengli/1190000002487141 主题 jQuery 随着DOM结构的复杂化和Ajax等动态脚本技术的运用,事件委托自然浮出了水面.jQuery为绑定和委托事件提供了.bind()..live()和.delegate()方法.本文在讨论这几个方法内部实现的基础上,展示它们的优劣势及适用场合. 事件委托 事件委托…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.    背景 最近项目原因使用了durandal.js和knockout.js,颇有受益.决定写一个比较浅显的总结. 之前一直在用SpringMVC框架写后台,前台是用JSP+JS+标签库,算是很传统的MVC开发模式了.后来,前端用Flex还有微软的WPF做过开发,到这次,前端使用纯JS+HTML,利用knockout.js,也算是接触了几种语言下的MVVM模式.…
原生bind方法 不同于jQuery中的bind方法只是简单的绑定事件函数,原生js中bind()方法略复杂,该方法上在ES5中被引入,大概就是IE9+等现代浏览器都支持了(有关ES5各项特性的支持情况戳这里ECMAScript 5 compatibility table),权威指南上提到在ES3中利用apply模拟该方法的实现(JS权威指南中函数那章), 但无法真实还原该方法, 这也是真bind方法中的有趣特性. (原文这边理解有问题, 这段话的意思如果结合犀牛书上下文的意思, 再结合犀牛书中…
调用每一个函数会暂停当前函数的执行,传递控制权和参数给新函数.除了声明时定义的形式参数,每个函数还接收两个附加的参数:this 和 arguments. 参数this在面向对象编程中非常重要,他的值取决于调用的模式. 在JS中一共有4中调用模式:方法调用模式.函数调用模式.构造器调用模式和apply调用模式.这些模式在如何初始化关键参数this上存在差异. 方法调用模式 当一个函数被保存为对象的一个属性时,我们称为一个方法.当一个方法被调用时,this被绑定到该对象. var myObject…
//往上滑是调用分页 function Ajax(currPage, pageSize) { // ajax后台交互String currPage,String pageSize var el, Plist, i; el = document.getElementById('thelist'); var cancle = function(options) { var pattern = '${pageContext.request.contextPath}/integralParadise/u…
outline prototype 与 __proto__ function 与 object new 到底发生了什么 prototype 与 __proto__ 首先说下在JS中比较容易让人困惑的 prototype 和 __proto__ __proto__ 就是JavaScript中所谓的原型. 一个对象的 __proto__ 属性和自己的内部属性[[Prototype]]指向一个相同的值 (通常称这个值为原型),原型的值可以是一个对象值也可以是null(比如说Object.prototy…