当前位置:首页 > Web开发 > 正文

复杂对象返回值指向新对象) function X() { this .A = ‘ XA ‘ ; return ‘‘ ;

2024-03-31 Web开发

JavaScript 中 this 不是固定不乱的,它会跟着执行环境的转变而转变

严格模式(‘use strict‘

  1.非严格模式下,全局感化域下的this指向window

  2.严格模式下,全局感化域下的this指向undefined

use strict function X() { console.log(this); } X(); // 严格模式输出undefined,非严格模式输出Window

非严格模式讨论

  1.在东西方挪用方法中, this指向挪用它地址要领的东西

var X = { A: XA, B: function() { console.log(this.A); } }; X.B();//输出XA

  2.在嵌套东西挪用方法中,this指向最终挪用东西

var A = A; var X = { A: XA, B: function() { console.log(this.A); } }; var B = X.B; B();//输出‘A‘

  3.结构函数中this指向由return返回值确定(普通返回值指向东西实例自己,庞大东西返回值指向新东西)

function X() { this.A = XA; return ‘‘;//当前情况功效输出XA //return {A:‘RA‘};//当前情况功效输出RA } var Y = new X(); console.log(Y.A)

  4.在HTML事件句柄中,,this指向了接收事件的HTML元素

<button onclick="this.style.display=‘none‘">点击消掉</button>

  5.apply、call、bind绑按时,this指向第一个参数

var A = {a:Aa}; var B = {a:Ba}; function X() { console.log(this.a); } X.call(A,B); // 输出Aa

  6.箭头函数的this指向为界说箭头函数的this(等同于上一级this)

var A = A; var X = { A: XA, //Y: () => {console.log(this.A)}//该情况输出A Y: function() {console.log(this.A)}//该情况输出XA } X.Y();

  7.按时器(setTimeout、setInterval)挪用 在按时器中,this指向window

var A = A; var X = { A: XA, Y: setTimeout(function() {console.log(this.A)}, 1000) } X.Y; //输出A

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32354.html