一直以来对和this有关的东西模糊不清,譬如call.apply等等.这次看到一个和bind有关的笔试题,故记此文以备忘. bind和call以及apply一样,都是可以改变上下文的this指向的.不同的是,call和apply一样,直接引用在方法上,而bind绑定this后返回一个方法,但内部核心还是apply. 直接看例子: 1 2 3 4 5 6 7 8 9 10 11 12 var obj = {   a: 1,   b: 2,   getCount: function(c, d) {…
一直以来对和this有关的东西模糊不清,譬如call.apply等等.这次看到一个和bind有关的笔试题,故记此文以备忘. bind和call以及apply一样,都是可以改变上下文的this指向的.不同的是,call和apply一样,直接引用在方法上,而bind绑定this后返回一个方法,但内部核心还是apply. 直接看例子: var obj = { a: 1, b: 2, getCount: function(c, d) { return this.a + this.b + c + d; }…
原生bind方法 不同于jQuery中的bind方法只是简单的绑定事件函数,原生js中bind()方法略复杂,该方法上在ES5中被引入,大概就是IE9+等现代浏览器都支持了(有关ES5各项特性的支持情况戳这里ECMAScript 5 compatibility table),权威指南上提到在ES3中利用apply模拟该方法的实现(JS权威指南中函数那章), 但无法真实还原该方法, 这也是真bind方法中的有趣特性. (原文这边理解有问题, 这段话的意思如果结合犀牛书上下文的意思, 再结合犀牛书中…
有次面试遇到的,也是没说清楚具体的作用,感觉自己现在还是没有深刻的理解! bind():绑定事件类型和处理函数到DOM element(父元素上) live():绑定事件到根节点上,(document上)Delegate(): 可动态添加事件,绑定到你指定的元素节点 下面就bind()方法做一个例子实验:(已测试) window.onload = function(){ window.name = "window"; var newObject = { name : "obj…
对于bind,我愣了下,这个方法常用在jquery中,用于为被选元素添加一个或多个事件处理程序. 查了下手册,发现bind的作用和apply,call类似都是改变函数的execute context,也就是return时this关键字的指向.但是使用方法略有不同.一个函数进行bind后可稍后执行. var altwrite = document.write; altwrite("hello"); 上面的程序运行,会报错:Uncaught TypeError: Illegal invoc…
提到bind方法,估计大家还会想到call方法.apply方法:它们都是Function对象内建的方法,它们的第一个参数都是用来更改调用方法中this的指向.需要注意的是bind 是返回新的函数,以便稍后调用:apply .call 则是立即调用原函数 .而今天我们主要讲解bind方法的理解与使用. bind方法是EcmaScript5新增的方法,该方法在mdn上是这么介绍的: bind()方法创建一个新的函数(称为绑定函数), 当被调用时,将其this关键字设置为提供的值,在调用新函数时,在任…
// 在ES5中,通常使用构造函数方法去实现类与继承 // 创建父类 function Father(name, age){ this.name = name; this.age = age; } Father.prototype.show = function(){ console.log(this.name); console.log(this.age); } const obj = new Father('李大师', 30); obj.show(); // 输出 李大师 30 // 创建子…
// 简单版 Function.prototype.bind = function(context) { var self = this; return function() { self.apply(context, arguments); }; }; // 稍微复杂那么一丢丢的bind版 Function.prototype.bind = function() { var self = this, // 原函数 context = [].shift.call(arguments), // t…
本文首发我的个人博客:前端小密圈,评论交流送1024邀请码,嘿嘿嘿…
load()方法会在元素的onload事件中绑定一个处理函数.如果处理函数绑定给window对象,则会在所有内容(包括窗口,框架,对象和图像等)加载完毕后触发,如果处理函数绑定在元素上,则会在元素的内容加载完成后触发,代码如下: $(window).load(function(){ //编写代码 });…