js 对call apply bind理解】的更多相关文章

请参考 http://www.cnblogs.com/xljzlw/p/3775162.html 1.call和apply的区别:参数类型不同var mtt = { name: "mtt", sayHello: function (age) { console.log("hello, i am ", this.name + " " + age " years old"); } }; var xjs = { name: &quo…
js的call apply bind 方法都很常见,目的都是为了改变某个方法的执行环境(context) call call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) thisObj可选项.将被用作当前对象的对象.arg1, arg2, argN ..可选项.将被传递方法参数序列. 如果没设置严格模式 “use strict” 当thisObj 不存在或 为 undefined 或为 null 或为 this 时,则隐式地指向 全局对象(在浏览器中即为 wi…
   call,apply,bind 在JavaScript中,call.apply和bind是Function对象自带的三个方法,都是为了改变函数体内部 this 的指向.            apply . call .bind 三者第一个参数都是 this 要指向的对象,也就是想指定的上下文:            apply . call .bind 三者都可以利用后续参数传参: bind 是返回对应 函数,便于稍后调用:apply .call 则是立即调用 . ———————————…
why?call,apply,bind干什么的?为什么要学这个? 一般用来指定this的环境,在没有学之前,通常会有这些问题. var a = { user: "小马扎", fn: function(){ console.log(this.user); } } var b = a.fn; b(); // undefined 我们是想打印对象a里面的user却打印出来undefined是怎么回事呢?如果我们直接执行a.fn()是可以的. var a = { user: "小马扎…
对js中的一些基本的很重要的概念做一些总结,对进一步学习js很重. 一.this JavaScript 中的 this 总是指向一个对象,而具体指向那个对象是在运行时基于函数的执行环境动态绑定的,而非函数声明时的环境     实际应用中 this 的指向大致可以分为以下 4 中:         1. 作为对象的方法调用         2. 作为普通函数掉用         3. 构造器调用         4. Function.prototype.call 或 Function.proto…
call.apply.bind方法的共同点与区别: apply.call.bind 三者都是用来改变函数的this对象的指向: apply.call.bind 三者都可以利用后续参数传参: bind 是返回对应函数,便于稍后调用:apply.call则是立即调用. 一.call 1.   call(thisObj,x,y) thisObj的取值有以下4种情况: (1)不传,或者传null,undefined,函数中的this指向window对象: (2)传递另一个函数的函数名,函数中的this指…
1. 前言 使用原生JS实现call和apply函数,充分了解其内部原理.call和apply都是为了解决改变this的指向.作用都相同,只是传参的方式不同.除了第一个参数外,call可以接受一个参数列表,apply只接受一个参数数组. 2. call函数 2.1 描述 call() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数. 2.2 语法 fun.call(thisArg, arg1, arg2, ...) 2.3 参数 thisArg:可选的.在 fun 函数…
call和apply obj.call(thisObj, arg1, arg2, ...); obj.apply(thisObj, [arg1, arg2, ...]); 两者作用一致,都是把obj(即this)绑定到thisObj,这时候thisObj具备了obj的属性和方法.或者说thisObj『继承』了obj的属性和方法.绑定后会立即执行函数. 唯一区别是apply接受的是数组参数,call接受的是连续参数. function add(j, k){ return j+k; } functi…
测试代码: var a = 1; var obj = { a = 2; } function test(a){ alert(a); alert(this.a); } 1.test(3); 结果:3,1 函数中this指向window对象 2.test.call(thisObj,param1,param2....); thisObj:test函数中this的指向 param1,param2...:传给test函数的参数 3.test.call(null,3)或者test.call(undefine…
new new 做了什么事?1. 以 Object.protoype 为原型创建一个新对象 2. 以新对象为 this,执行函数的 [[call]] 3. 如果 [[call]] 的返回值是对象,那么,返回这个对象,否则返回第一步创建的新对象 function myNew(fn, ...args) { const obj = Object.create(fn.prototype); const ret = fn.call(obj, ...args); return ret instanceof…