分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

js this小记

发布时间:2023-09-06 01:40责任编辑:董明明关键词:js

在JavaScript中,this 对象是在函数被调用时动态定义的.

JS中有三种方法来设置this对象:

  1. someThing.someFunction(arg1, arg2, argN)
  2. someFunction.call(someThing, arg1, arg2, argN)
  3. someFunction.apply(someThing, [arg1, arg2, argN])

上面几个例子中, this 都是 someThing, 调用没有前导父对象的函数通常会得到全局对象,

在大多数浏览器中这个对象意味着窗口对象。

因此, 下面的代码会打印出两个window:

function a(){ ???console.log(this, ‘是a的this‘) ???function b(){ ???????console.log(this, ‘是b的this‘) ???} ???b()}a()// window,是a的this// window,是b的this

故下面的代码会打印 c 和 window:

var c = {a: a}function a(){ ???console.log(this, ‘是a的this‘) ???function b(){ ???????console.log(this, ‘是b的this‘) ???} ???b()}c.a()// c, 是a的this// window, 是b的this

使用es6的箭头函数可避免无前导父对象的函数被调用时 this 指向 window 的问题,

它会将 this 设置为箭头函数被定义时所处的函数体的宿主对象, 下面会打印 c 和 c:

var c = {a: a}function a(){ ???console.log(this, ‘是a的this‘) ???var b = ()=>console.log(this) ???b()}c.a()// c, 是a的this// c, 是b的this

关于更进一步理解es6的箭头函数的 this, 这篇博客写的不错可以看看:

http://blog.csdn.net/u013344815/article/details/73184928#insertcode

js this小记

原文地址:https://www.cnblogs.com/skura23/p/8409980.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved