java this call_JavaScirpt的this指向 apply().call(),bind()个人笔记

写在前头: 本站内容为个人学习记录,纯属个人观点,不喜勿喷,欢迎指正!

笔记记录缘由:JavaScript的流行趋势已经势不可挡,衍生的AngularJs,Node.js,BootStrmp中小企业的后端开发越来越没有优势,IT不是一个可以完全靠经验说话的岗位,IT改变生活,作为一个三年的.Net程序员现在深深的感受到守旧其实就是害怕,躲避时代的进度,人生需要激情,需要动力!

正文:

一、apply().call(),bind()是做什么的?

这三个都是改变方法中this指向的

二、this是什么东西?

this指你当前调用的方法的执行对象,例如setTimeout方法的this

setTimeout(function(){

console.log(this)

},1000)

输出结果:

Window {external: Object, chrome: Object, document: document, Alax: Object, a2: Object…}

因为setTimeout的完全调用时Window.setTimeout  它属于Window对象的一个方法。

再定义一个对象

var Alax={

name:'Alax',

age:27,

fuc:function(){ return this.age;

}

}

按理说使用console.log(Alax.fun)应该输出的27但实际情况是undefined,这是为什么呢?因为在Alax对象外调用时实际的作用对象时Window,而Window是不包含age属性的,也就是说this指向改变了需要重新指定,此处先记着等讲完概念在对比你心中所想

三、call,apple,bind三者的区别

1.  参数对比

call的参数格式是(thisvalue,arg1)

apply的是(thisvalue,[arg1,ar2...])

bind的参数格式是(thisvalue,arg1,ar2...)

thisvalue指的是要传递的this指向,后面的参数是非必输跟方法的参数一一对应,传入了都可以用arguments获取

2.返回结果对比

call和apple指将所有参数传递到arugements,并直接返回调用结果

bind指将返回一个传入值在方法运行后返回一个新的函数 需要加上()调用

总结:上面的调用方式可以是

console.log((Alax.fuc).call(Alax))

console.log((Alax.fuc).apply(Alax))

console.log((Alax.fuc).bind(Alax)())

附上参数调用

Alax={

name:'Alax',

age:27,

fuc:function(num){

this.age+=num

return this.age;

}

}

console.log((Alax.fuc).call(Alax,1))

console.log((Alax.fuc).apply(Alax,[1]))

console.log((Alax.fuc).bind(Alax)(1))

JS 中的this指向问题和call、apply、bind的区别

this的指向问题 一般情况下this对象指向调用函数的对象,全局环境中执行函数this对象指向window. function a(){ console.log(this); //输出函数a中的th ...

作用域链和函数内部this指向问题以及bind、call、apply方法

作用域链和函数内部this指向问题以及bind.call.apply方法 作用域链 作用域是相对于变量而言的, 其意义就在与查找变量(确定变量的来处, 变量是否可以访问到, 确定变量在当前位置是否可以 ...

js中改变this指向的call、apply、bind 方法使用

前言: 由于js 中this的指向受函数运行环境的影响,指向经常改变,使得开发变得困难和模糊,所以在封装sdk,写一些复杂函数的时候经常会用到this 指向绑定,以避免出现不必要的问题,call.ap ...

改变函数中的 this 指向——神奇的call,apply和bind及其应用

在JavaScript 中,call.apply 和 bind 是 Function 对象自带的三个方法,这三个方法的主要作用是改变函数中的 this 指向,从而可以达到`接花移木`的效果.本文将对这 ...

javascirpt之 this、apply、call、bind

this.apply.call.bind 这又是一个面试经典问题~/(ㄒoㄒ)/~~也是 ES5中众多坑中的一个,在 ES6 中可能会极大避免 this 产生的错误,但是为了一些老代码的维护,最好还是 ...

js中更改this指向 以及回顾bind、call和apply

1.更改this指向 方法1:对this进行保存            var _this = this; 例: var _this = this;     document.onclick = fu ...

js中call、apply、bind到底有什么区别?bind返回的方法还能修改this指向吗?

壹 ❀ 引 同事最近在看angularjs源码,被源码中各种bind,apply弄的晕头转向:于是他问我,你知道apply,call与bind的区别吗?我说apply与call是函数应用,指定thi ...

JavaScript 中call()、 apply()、 bind()改变this指向理解

最近开发的过程中遇到了this指向问题,首先想到的是call().apply().bind()三个方法,有些时候这三个方法确实是十分重要,现在我们就把他们的使用方法及异同点讲解一下. 1.每个函数都包 ...

有关call和apply、bind的区别及this指向问题

call和apply都是解决this指向问题的方法,唯一的区别是apply传入的参数除了其指定的this对象之外的参数是一个数组,数组中的值会作为参数按照顺序传入到this指定的对象中. bind是解 ...

随机推荐

VCC、VDD、VSS、 VEE 和VPP的区别

在电子电路中,常可以看到VCC.VDD和VSS三种不同的符号,它们有什么区别呢? 一.解释 VCC:C=circuit 表示电路的意思, 即接入电路的电压: VDD:D=device 表示器件的意思, ...

POJ 1065 Wooden Sticks Greed,DP

排序后贪心或根据第二关键字找最长下降子序列 #pragma comment(linker, "/STACK:1024000000,1024000000") #include< ...

在数组中搜索数据用 filteredArrayUsingPredicate

苹果官方说明文档:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Predicates/Articles/ ...

夺命雷公狗---DEDECMS----24dedecms让网站头部分离

我们这里来做一个让网站头部分离的工作,我们先看下index.htm的模版, 这里很明显就是用了一个div包围着而已,那么我们在模版目录下创建一个head.htm,如下所示: 然后我们再将刚才div里面 ...

poj-------&lpar;2240&rpar;Arbitrage&lpar;最短路&rpar;

Arbitrage Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15640   Accepted: 6563 Descri ...

JDBC(四)

1 Apache DBUtils框架 1.1 DBUtils简介 commons-dbutils是Apache组织提供的一个开源JDBC工具类库,它是对JDBC的简单封装,学习成本非常低,并且使用db ...

Python pygame安装过程笔记

今天看到一个教程,是关于Python安装pygame模块的.觉得很好,拿来分享一下. 安装Python 额,这个小题貌似在这里很是多余啊.但是为了照顾到刚刚学习Python的童鞋,我还是多啰嗦两句吧. ...

IT这条路,适合什么人走。

今天 ,到图书馆Study,呼,不知道为撒,看到那么多新书,那么多新技术(也不能说是新技术,就是自己没有学习过的技术),特别兴奋,学习的疲劳顿时间就没了,感觉什么都想学,都想据为己有,但是...... ...

Swift学习笔记1

1.Swift 的String类型是值类型. 如果您创建了一个新的字符串,那么当其进行常量.变量赋值操作,或在函数/方法中传递时,会进行值拷贝. 任何情况下,都会对已有字符串值创建新副本,并对该新副本 ...

TypeScript基础学习

什么是TypeScript? TypeScript是一种由微软开发的自由的和开源的编程语言,它是JavaScript的一个超集,扩展了JavaScript的语法. TypeScript支持任意浏览器, ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值