当前位置: 首页 > news >正文

中国都有哪些网站网站指数查询

中国都有哪些网站,网站指数查询,怎样在领英上做公司网站,跨境电商平台推广总结:谁调用我,我就指向谁(es6箭头函数不算) 一、ES6之前 每一个函数内部都有一个关键字是 this ,可以直接使用 重点: 函数内部的 this 只和函数的调用方式有关系,和函数的定义方式没有关系 …

总结:谁调用我,我就指向谁(es6箭头函数不算)

一、ES6之前

  • 每一个函数内部都有一个关键字是 this ,可以直接使用

  • 重点: 函数内部的 this 只和函数的调用方式有关系,和函数的定义方式没有关系

1、 函数内部的 this 指向谁,取决于函数的调用方式

1.1、全局定义的函数直接调用,this => window
 function fn() {console.log(this)}fn()// 此时 this 指向 window
1.2、 对象内部的方法调用,this => 调用者
var obj = {fn: function () {console.log(this)}
}
obj.fn()
// 此时 this 指向 obj
1.3、 定时器的处理函数,this => window
setTimeout(function () {console.log(this)
}, 0)
// 此时定时器处理函数里面的 this 指向 window
1.4、事件处理函数,this => 事件源
div.onclick = function () {console.log(this)
}
// 当你点击 div 的时候,this 指向 div
1.5、自调用函数,this => window
(function () {console.log(this)
})()
// 此时 this 指向 window

2、改变this指向

call 和 apply 和 bind

  • 刚才我们说过的都是函数的基本调用方式里面的 this 指向
  • 我们还有三个可以忽略函数本身的 this 指向转而指向别的地方
  • 这三个方法就是 call / apply / bind
  • 是强行改变 this 指向的方法
call
  • call 方法是附加在函数调用后面使用,可以忽略函数本身的 this 指向

  • 语法: 函数名.call(要改变的 this 指向,要给函数传递的参数1,要给函数传递的参数2, ...)

    var obj = { name: 'Jack' }
    function fn(a, b) {console.log(this)console.log(a)console.log(b)
    }
    fn(1, 2)
    fn.call(obj, 1, 2)
    
    • fn() 的时候,函数内部的 this 指向 window
    • fn.call(obj, 1, 2) 的时候,函数内部的 this 就指向了 obj 这个对象
    • 使用 call 方法的时候
      • 会立即执行函数
      • 第一个参数是你要改变的函数内部的 this 指向
      • 第二个参数开始,依次是向函数传递参数
apply
  • apply 方法是附加在函数调用后面使用,可以忽略函数本身的 this 指向

  • 语法: 函数名.apply(要改变的 this 指向,[要给函数传递的参数1, 要给函数传递的参数2, ...])

    var obj = { name: 'Jack' }
    function fn(a, b) {console.log(this)console.log(a)console.log(b)
    }
    fn(1, 2)
    fn.apply(obj, [1, 2])
    
    • fn() 的时候,函数内部的 this 指向 window
    • fn.apply(obj, [1, 2]) 的时候,函数内部的 this 就指向了 obj 这个对象
    • 使用 apply 方法的时候
      • 会立即执行函数
      • 第一个参数是你要改变的函数内部的 this 指向
      • 第二个参数是一个 数组,数组里面的每一项依次是向函数传递的参数
bind
  • bind 方法是附加在函数调用后面使用,可以忽略函数本身的 this 指向

  • 和 call / apply 有一些不一样,就是不会立即执行函数,而是返回一个已经改变了 this 指向的函数

  • 语法: var newFn = 函数名.bind(要改变的 this 指向); newFn(传递参数)

    var obj = { name: 'Jack' }
    function fn(a, b) {console.log(this)console.log(a)console.log(b)
    }
    fn(1, 2)
    var newFn = fn.bind(obj)
    newFn(1, 2)
    
    • bind 调用的时候,不会执行 fn 这个函数,而是返回一个新的函数
    • 这个新的函数就是一个改变了 this 指向以后的 fn 函数
    • fn(1, 2) 的时候 this 指向 window
    • newFn(1, 2) 的时候执行的是一个和 fn 一摸一样的函数,只不过里面的 this 指向改成了 obj
方法this 指向参数传递方式执行时机
call指定逐个传递立即执行
apply指定数组形式传递立即执行
bind指定逐个传递(可选)返回新函数,需手动调用

二、ES6之后的箭头函数

箭头函数内部没有 this,箭头函数的 this 是上下文的 this

const input = document.getElementById('input');
const btn = document.getElementById('btn');const obj = {value: 'Hello',printWithRegularFunction: function() {setTimeout(function() {console.log('普通函数:', this.value); // 这里的 this 指向全局对象(window)}, 1000);},printWithArrowFunction: function() {setTimeout(() => {console.log('箭头函数:', this.value); // 这里的 this 指向 obj 对象}, 1000);}};btn.addEventListener('click', () => {obj.value = input.value; // 将输入框的值赋值给 obj.valueobj.printWithRegularFunction();obj.printWithArrowFunction();});

运行结果 在这里插入图片描述

注意对象中的箭头函数

虽然箭头函数不能用于定义对象方法(因为它没有自己的 this),但可以在对象中定义箭头函数作为普通属性。

const obj = {name: 'Alice',sayHello: () => {console.log(`Hello, ${this.name}`); // 这里的 this 指向外层作用域}
};obj.sayHello(); // Hello, undefined

注意:箭头函数不适合用于对象方法,因为它会丢失对对象 this 的绑定。

http://www.yayakq.cn/news/338442/

相关文章:

  • cms企业网站模板最好的县级代理商品
  • 做网站ui主要研究内容WordPress如何建小语种网站
  • 上海企业建设网站在家建设一个网站需要什么材料
  • 海南省建设培训与执业资格注册中心网站芜湖网站建设推广
  • 做导师一般去什么网站找素材wordpress网站主机名
  • 衡阳建设学校网站php自适应网站
  • c 教学网站开发php做的网站建设
  • 太原网站开发公司音乐模板wordpress
  • 简单网站建设方案策划移动端html5模板
  • 建网站基础需要学什么新产品上市推广策划方案模板
  • 网站与网络的区别wordpress4.7中文
  • 门户网站建设询价公告网站的标题与关键词
  • 网站建设 报价单门户网站个人可以做吗
  • 因网站建设关闭的公告中国建筑集团2022招聘
  • 怎么做一个免费的网站一般使用的分辨率是多少dpi?
  • 手机网站 建设订阅号怎么做免费的视频网站吗
  • 郑州网站建设q.479185700棒百度竞价推广账户优化
  • 网站名字大全抚顺网站建设公司
  • 常熟网站建设专业的公司wordpress小说主题
  • 网站建设保密条款南同网站建设软件下载
  • flask做的网站如何上传网站优化seo是什么意思
  • wordpress建站原理wordpress 邮箱验证
  • 网站设计论坛推荐国外网站设计
  • 菏泽网站建设公司官网网站服务器租赁多少钱
  • 拥有服务器后如何做网站南京当的网站
  • 江苏公司网站建设公司wordpress文章模板下载
  • 企业网站建设 百度文库太原网站制作电话
  • 余姚市建设局网站深圳十大装修公司品牌排行榜
  • 网站注意事项网推app下载
  • 做坑人网站二维码网站搭建方案