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

公司网站建设代码都写完了成都91获客

公司网站建设代码都写完了,成都91获客,源码商城系统,成都网页制作公司前言: 在js中,this出现的位置多种多样,你会不会迷糊呢?this到底指代的是哪个对象?这篇文章带你搞懂不同场景下this的指向问题。 this出现场景: 从作用域的角度来讲,this出现的位置无非就是两…

前言:

在js中,this出现的位置多种多样,你会不会迷糊呢?this到底指代的是哪个对象?这篇文章带你搞懂不同场景下this的指向问题。

this出现场景:

从作用域的角度来讲,this出现的位置无非就是两种类型:全局作用域,函数作用域。

全局作用域

在全局作用域中,this 指向全局对象。在浏览器中,全局对象是 window,而在 Node.js 中,它是 global

console.log(this); // 在浏览器中,输出 window 对象

函数作用域:

函数调用:

普通函数调用:在非严格模式下,this 指向全局对象(浏览器中是 window);在严格模式下,this 是 undefined

function test() {console.log(this);
}test(); // 非严格模式下输出 window,严格模式下输出 undefined

严格模式下的函数调用

'use strict';function test() {console.log(this); // 输出 undefined
}test();

方法调用:

当函数作为对象的方法被调用时,this 指向该对象。

const obj = {name: 'Alice',greet: function() {console.log(this.name);}
};obj.greet(); // 输出 'Alice'

构造函数调用:

当使用 new 关键字调用函数时,this 指向新创建的对象。

function Person(name) {this.name = name;
}const person = new Person('Bob');
console.log(person.name); // 输出 'Bob'

箭头函数:

箭头函数不绑定自己的 this,而是继承自外围作用域的 this

const obj = {name: 'Charlie',greet: function() {const arrowFunc = () => {console.log(this.name);};arrowFunc();}
};obj.greet(); // 输出 'Charlie'

显示指定this指向:

call 和 apply:允许显式设置 this 的值。

function greet(greeting) {console.log(greeting + ', ' + this.name);
}const person = { name: 'David' };
greet.call(person, 'Hello'); // 输出 'Hello, David'
greet.call(person,['Hello']); // 输出 'Hello, David'

apply 的用法与 call 类似,只是参数以数组形式传递。

bind:返回一个新函数,其中 this 被永久绑定到指定的值。

const boundGreet = greet.bind(person, 'Hi');
boundGreet(); // 输出 'Hi, David'

this指向测试题

1、

const obj = {name: 'Alice',showThis: function() {setTimeout(function() {console.log(this.name);}, 1000);}
};obj.showThis();setTimeout 中的回调函数是普通函数调用,其 this 指向全局对象(浏览器中是 window,Node.js 中是 global)。
如果全局对象没有 name 属性,输出 undefined。

2、

const obj = {name: 'Alice',showThis: function() {setTimeout(() => {console.log(this.name);}, 1000);}
};obj.showThis();箭头函数不会创建自己的 this,它会继承外层作用域的 this。
在这里,外层作用域是 showThis 方法,因此 this 指向 obj。
输出结果为:Alice。

3、

const person = {name: 'Charlie',showThis: function() {return () => {console.log(this.name);};}
};const arrowFunc = person.showThis();
arrowFunc();person.showThis() 返回的是一个箭头函数,箭头函数的 this 继承自其定义时的作用域。
定义时的作用域是 showThis 方法,而 showThis 中的 this 指向 person。
因此,最终 this 指向 person,输出结果为:Charlie。

4、

const name = 'Global';const obj = {name: 'Alice',showThis: function() {console.log(this.name);}
};const show = obj.showThis;
show();show 是从 obj 中提取的普通函数引用,调用时没有绑定到 obj。
普通函数调用中,this 指向全局对象(浏览器中是 window,Node.js 中是 global)。
如果全局对象有 name 属性(如浏览器中 window.name 默认是空字符串),输出该值;否则输出 undefined。
const声明的变量不会被挂载在window上,因此会输出undefined

5、

const obj = {name: 'Alice',showThis: function() {console.log(this.name);}
};const boundFunc = obj.showThis.bind({ name: 'Bob' });
boundFunc();bind 方法会创建一个新函数,并将 this 显式绑定到指定的对象({ name: 'Bob' })。
因此,this 指向 { name: 'Bob' },输出结果为:Bob。

以上测试题如果你都搞明白了,说明你已经有了不错的收获。恭喜你,今天的你又进步了一点点,加油!!!


文章转载自:

http://GoZ47eK2.tmnyj.cn
http://J7Dw5J4B.tmnyj.cn
http://TXMrA1v8.tmnyj.cn
http://KvvygrD7.tmnyj.cn
http://3j6gz5YS.tmnyj.cn
http://rZh0ehXm.tmnyj.cn
http://k3iUYSCO.tmnyj.cn
http://QVuy5ZnW.tmnyj.cn
http://U8dO4xOZ.tmnyj.cn
http://ZpVik6PK.tmnyj.cn
http://EuGkflXc.tmnyj.cn
http://Q2KTa0RX.tmnyj.cn
http://C46Kzdyy.tmnyj.cn
http://v2xMR7IO.tmnyj.cn
http://AhkBpRax.tmnyj.cn
http://DT6xWHmF.tmnyj.cn
http://FfO7BO8d.tmnyj.cn
http://0vJTt9i2.tmnyj.cn
http://MYb3w5Ez.tmnyj.cn
http://2PQzc02G.tmnyj.cn
http://yqshJ5o4.tmnyj.cn
http://WFEVDW9V.tmnyj.cn
http://jNhT8lA7.tmnyj.cn
http://cyJ35hEc.tmnyj.cn
http://dmrbpkPu.tmnyj.cn
http://4M8Ea7ZB.tmnyj.cn
http://UAoP4AF2.tmnyj.cn
http://3G3xP7rf.tmnyj.cn
http://KYXMNOA3.tmnyj.cn
http://zyreTKGW.tmnyj.cn
http://www.dtcms.com/wzjs/717924.html

相关文章:

  • 海洋馆网站建设wordpress图片链接
  • 上线一个网站需要哪些条件企业管理app软件
  • 苏州做网站哪家好设计制作费用计入什么会计科目
  • wp做图网站微信平台专业网站建设
  • 外贸企业网站开发淄博网站制作设计
  • 网站建设需要考虑的问题网站建设公司招网站设计
  • 网站我们的客户网站图片切换代码
  • 金坛做网站哪家好网站加友情链接
  • 遨游网站建设有限公司手机网站域名哪里注册
  • 手机网站 等比缩放个人简历模板免费下载电子版
  • 东莞网站建设市场分析望野王维
  • 动态效果的网站建设技术传奇开服表
  • 中国建设银行网站查询佛山企业手机网站建设
  • 河北新亚建设集团网站建设环保网站的目的与功能分析
  • 连云港做网站哪家好美工培训哪个机构好
  • 网站建设软件appqq空间个人网站
  • 长沙专业做网站公司网站建设和开发
  • 网站建设公司知识wordpress收件邮箱
  • 网站建设lhempire网站建建设心的
  • 跟我学做纸艺花网站浙江建设继续教育网站
  • 用vs2010做购物网站电商运营面试问题及回答
  • 漳州网站建设哪家最权威同ip多域名做同行业网站
  • 沈阳制作网站建站软件生成器下载
  • 爱站工具包怎么使用专业的昆明网站建设
  • 网站建设与运营市场风险怎么查看网站空间是否到期
  • 网站icp备案信息是什么意思南京建站在线咨询
  • 网站建设和维护管理预算郴州
  • 如何修改asp网站栏目中山vi设计公司
  • 怎样做网站设计网站建设优化佛山
  • 哪些网站可以找到做药人的信息网站开发毕业实训总结