发布时间:2024-08-09 12:01
调用方式 | this指向 |
---|---|
普通函数调用 | window |
构造函数调用 | 实例对象 原型对象里的方法也指向实例对象 |
对象方法调用 | 该方法所属对象 |
事件绑定方法 | 绑定事件对象 |
定时器函数 | window |
立即执行函数 | window |
总结来说:除了定时器、普通函数和立即执行函数this指向为window,其他都指向调用者
var o ={
name:\'mkbird\'
}
function fn(){
console.log(this);
}
fn() // 输出window
fn.call(o); // 调用fn并将fn的this指向o,输出对象o
// 所以es5很多时候在子类继承父类时会使用Father.call(this)来使用父类的属性,es6使用super()
// 同时call()在实现调用函数功能时,还能传入参数
var o ={
name:\'mkbird\'
}
function fn(a,b){
console.log(a+b);
}
fn.call(o,1,2); // 输出3
fun.apply(thisArg,[argsArray])
// apply主要利用它传入数组返回数字的特性解决数组中的问题
// 比如Math.max只支持传入数字,但是我们现在用的是数组
var arr = [1.2,3]
var max = Math.max.apply(null,arr)
console.log(max) // 3
//如果有函数不想立即调用,又想改变函数的内部指向,这时就用bind
var o ={
name:\'mkbird\'
}
function fn(){
}
var f =fn.bind(o)
f();
// 箭头函数是函数换了一种写法
(参数)=>{函数体}
箭头函数与普通函数最大的区别是,箭头函数不会绑定this,箭头函数中的this指向箭头函数定义区的this
注意:箭头函数没有剩余参数arguments,如果想保存剩余参数只能使用…
…可以将剩余参数以数组的形式存起来
let students = [\'zs\',\'ls\',\'ww\']
let [s1,...s2] = student;
console.log(s1); //\'zs\'
console.log(s2); //[\'ls\',\'ww\']
墨天轮访谈 | 叶金荣:GreatSQL开源社区——做中国广受欢迎的开源数据库
springboot+mybatis+thymeleaf学习一个简单的管理系统
Live555 RTSP服务端H264推流笔记(平台RK3399Pro+mpp)
关于GAN训练过程中的报错:one of the variables needed for gradient computation has been modified by an inplace
SparkStreaming-----SparkStreaming教程
SQL Server 2019 安装教程(详细免费,自定义安装)
机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 1)
【电赛最全备赛资源】电赛历年赛题源码+老学长挥泪经验之谈(文章较长全网最全)+电赛论文写作模板及评分标准【19电磁炮、17板球、15风力摆、13倒立摆、94-21全国大学生电子设计竞赛历年真题】
python windows linux github 开发_深入体验bash on windows!在windows上搭建原生的linux开发环境...