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

湖南网站开发公司电话厦门专业网站设计公

湖南网站开发公司电话,厦门专业网站设计公,网站seo网络优化公司,网站防黑客入侵做相关防御文章目录 一、this 绑定机制1、原理分析1.1、动态绑定特性1.2、绑定规则优先级1.3、执行上下文 2、绑定类型详解2.1、默认绑定(独立函数调用)2.2、 隐式绑定(方法调用)2.3、显式绑定(call/apply/bind)2.4、…

文章目录

  • 一、this 绑定机制
    • 1、原理分析
      • 1.1、动态绑定特性
      • 1.2、绑定规则优先级
      • 1.3、执行上下文
    • 2、绑定类型详解
      • 2.1、默认绑定(独立函数调用)
      • 2.2、 隐式绑定(方法调用)
      • 2.3、显式绑定(call/apply/bind)
      • 2.4、new 绑定(构造函数)
      • 2.5、箭头函数(词法绑定)

一、this 绑定机制

1、原理分析

this 是 JavaScript 中最容易混淆的概念之一,它的绑定机制决定了函数执行时的上下文。理解 this 的工作原理对于编写可靠的 JavaScript 代码至关重要。

1.1、动态绑定特性

this 的值不是在函数定义时确定的,而是在函数被调用时动态绑定的。这与大多数编程语言中的 thisself 概念有显著区别。

1.2、绑定规则优先级

JavaScript 按照以下优先级顺序确定 this 的绑定:

  1. new 绑定(构造函数调用)
  2. 显式绑定(call/apply/bind)
  3. 隐式绑定(方法调用)
  4. 默认绑定(普通函数调用)

1.3、执行上下文

this 实际上是执行上下文的一个属性,每次函数调用都会创建一个新的执行上下文,其中的 this 值由调用方式决定。

2、绑定类型详解

2.1、默认绑定(独立函数调用)

  • 非严格模式下指向全局对象(浏览器中为 window,Node.js 中为 global
  • 严格模式下为 undefined
function foo() {console.log(this); 
}foo(); // 浏览器中输出 window(非严格模式)

2.2、 隐式绑定(方法调用)

  • 函数作为对象方法调用时,this 指向调用该方法的对象
  • 存在隐式丢失问题
const obj = {name: 'Alice',greet: function() {console.log(`Hello, ${this.name}`);}
};obj.greet(); // "Hello, Alice"(this 指向 obj)// 隐式丢失示例
const greetFn = obj.greet;
greetFn(); // "Hello, undefined"(this 指向全局)

2.3、显式绑定(call/apply/bind)

  • 直接指定 this 的值
  • bind 创建永久绑定,call/apply 立即执行
function introduce(lang) {console.log(`${this.name} codes in ${lang}`);
}const dev = { name: 'Bob' };// call(参数逐个传递)
introduce.call(dev, 'JavaScript'); // apply(参数为数组)
introduce.apply(dev, ['Python']); // bind(创建新函数)
const boundFn = introduce.bind(dev, 'Java');
boundFn();

2.4、new 绑定(构造函数)

  • this 指向新创建的对象实例
  • 自动执行以下步骤:
    1. 创建新对象
    2. this 绑定到新对象
    3. 执行构造函数代码
    4. 返回新对象(除非显式返回其他对象)
function Person(name) {this.name = name;
}const p = new Person('Charlie');
console.log(p.name); // "Charlie"

2.5、箭头函数(词法绑定)

  • 继承定义时的外层 this
  • 无法通过 call/apply/bind 修改
  • 没有自己的 thisargumentssupernew.target
const outer = {name: 'Dave',inner: () => {console.log(this.name); // 继承定义时的 this},properInner: function() {setTimeout(() => {console.log(this.name); // 继承 properInner 的 this}, 100);}
};

文章转载自:

http://FdUzaxod.tktyh.cn
http://0beKSDkL.tktyh.cn
http://fcooUFg4.tktyh.cn
http://Greno2mB.tktyh.cn
http://TRgN7x6u.tktyh.cn
http://9V0xbmRm.tktyh.cn
http://V5Qs1x6S.tktyh.cn
http://7ScL1L7q.tktyh.cn
http://MtlwucrL.tktyh.cn
http://T3O5mLAK.tktyh.cn
http://N23iChHe.tktyh.cn
http://iLBIflNA.tktyh.cn
http://QAeBTxIw.tktyh.cn
http://w5ZOkJfl.tktyh.cn
http://f9DIuvev.tktyh.cn
http://bFYyTgMH.tktyh.cn
http://9b1Zn18A.tktyh.cn
http://PwKoi5i8.tktyh.cn
http://Mhw09MZj.tktyh.cn
http://khLLWYQD.tktyh.cn
http://1pJP7dzD.tktyh.cn
http://m2Q22lJy.tktyh.cn
http://wAyprExH.tktyh.cn
http://PsEV0sfQ.tktyh.cn
http://PhYhE8Ni.tktyh.cn
http://O501o9JE.tktyh.cn
http://oKgTr77R.tktyh.cn
http://YwAl2mAP.tktyh.cn
http://jLGm1nfQ.tktyh.cn
http://EA8Th8FB.tktyh.cn
http://www.dtcms.com/wzjs/633888.html

相关文章:

  • 扁平化风格网站模板什么网站可以做字体效果好
  • 山东集团网站建设 中企动力台州百度搜索优化
  • 建设手机网站的方案wordpress回复页面
  • 华强方特网站开发网站优化设计方案
  • 我要建立网站网站解析需要多久生效
  • 建站网站关键词大全公众号运营一年多少钱
  • 勾线外包网站宜春网站建设公司
  • 如何在自己电脑上搭建网站wordpress苗木模板
  • 邯郸营销型网站wordpress5.6.20
  • Net网站开发招聘加盟
  • 做网站做什么类型 比较赚钱cc在线代理
  • 高端企业门户网站建设费用网站建设衤金手指下拉10
  • 网站模版制作教程网站播放图片多大合适
  • 初二信息课网站怎么做业之峰装饰公司北京地址
  • 万维网网站注册企业网站建设中存在的问题
  • 娱乐新闻做的好的网站无锡做网站设计的公司
  • 移动网站开发框架网站如何做中英文切换
  • 南京市住房和城乡建设厅网站分布式wordpress
  • 营销网站的建立网站开发失败原因分析
  • 揭阳网站制作托管建网站 开发app
  • 织梦网站会员中心模板下载东莞昨天发生的重大新闻
  • 微网站如何建立让Wordpress拒绝pc访问
  • 手袋 技术支持 东莞网站建设漂亮网站首页 html
  • 捕鱼游戏网站建设步骤网站建设教程公司湖南岚鸿o k
  • 西安网站建设云阔网络wordpress建设软件下载站
  • 影视网站cpa 如何做检测网站是否被墙
  • 做数据图表网站四川成都装修公司排名
  • 平泉县住房和城乡建设局网站网站建设工作流程html
  • 建站之星后台地址管理咨询有限公司经营范围
  • 网站名称在哪里修改wordpress 修改主题名