this指向的9个规则和new操作符调用函数的步骤

1. this指向的9个规则

之前的文章中 有写this指向问题,这次是细化,看看this具体会指向哪里,面试常考!!!

函数的上下文由调用函数的方式决定。

规则1:

函数不调用,不能确定this指向谁。

规则2:

对象调用函数,this就指向这个对象。

对象名.函数名();

规则3:

圆括号直接调用函数,this指向window对象

函数名();

规则4:

数组或者类数组对象调用函数,this指向这个数组或者类数组对象

数组(类数组)名[下标]();

规则5:

IIFE中的函数,this指向window对象

(function (){

})();

规则6:

定时器、延时器调用函数,this指向window对象

setTimeout(函数,时间);

setInterval(函数,时间);

规则7:

事件监听函数的this是绑定事件的DOM元素

DOM元素.onclick = function () {

};

规则8:

call和apply方法能指定上下文

call(this,...其他参数);

apply(this,...其他参数);

规则9:

用new调用函数,this指向秘密创建的对象

2. 用new操作符调用函数的步骤

1)、函数体内会自动创建出一个空对象

2)、函数的上下文(this)指向这个对象

3)、执行函数体内的语句

4)、即使没有return语句,函数也会自动返回上下文对象

3. call和apply方法的区别

call和apply可以改变this指向。

区别:传参形式不同。

call():第一个参数是this指向,其余参数必须用逗号逐个列举出来;

apply():第一个参数是this指向,其余参数写到数组中;

4.DOM动态获取元素的方法有什么区别

querySelectorAll()、getElementsByClassName()、getElementsByTagName()方法返回的值都是一组数据,三者有什么区别?

区别一:参数不同

querySelectorAll()方法的参数是css选择器;

getElementsByClassName()方法的参数只能是类名;

getElementsByTagName()方法的参数只能是标签名。

区别二:动态获取

getElementsByClassName()方法和getElementsByTagName()方法在页面上增加或者删除元素时,获取的元素个数可以改变。而querySelectorAll()方法就做不到。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值