子功能中的Javascript新关键字

基督教

我正在尝试弄清'new'关键字在Javascript中的工作方式。但这是一种奇怪的行为。
当我在节点中运行此代码时:

var testing = function() {
  self = this;
  this.abc = 'abc';
  console.log(this); // ====> 1

  var subMethod = function () {
    console.log(this);  // =====> 2
    console.log(self === this); // ====> 3
  };
  //subMethod.apply(this);
  subMethod();
};


test = new testing();
// test = testing(); // ===> *4

console.log(self === this)给了我错误。nr 1中的'this'是{abc:'abc'},子方法中的'this'是全局的'this'对象。谁能给我这个行为的解释?
如果我使用subMethod.apply(this)运行,那么console.log(self === this)为true({abc:'abc'})

当我不使用new关键字(* 4)运行时,'this'变量就是与全局“ this”相同(如预期),console.log(self === this)也为true。

当使用'new'关键字运行时,子方法中的'this'为什么与全局'this'相同。

西蒙斯特

当您调用时new testing(),该函数testing以其上下文(this)作为新对象运行。第一个日志将是该对象。在内部,当您运行时subMethod(),它将在全局上下文中运行。这就是JS的工作方式。因此,thiswindowself !== this如果使用this上下文(subMethod.apply(this))来调用它,那么自然self === this

调用时testing(),它将在全局上下文中运行。当您添加abc,这是目前全球,为thiswindow调用时subMethod(),默认情况下也会在全局上下文中调用它,因此self === this

因此,基本上,运行普通函数是在全局上下文中。将函数作为构造函数运行(使用new)会创建一个新的上下文。运行的方法(例如"abaca".split('a'))称为在基础对象的上下文-split被调用,"abaca"作为它的this

有帮助吗?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JavaScript const关键字

来自分类Dev

Dart中的“ with”关键字

来自分类Dev

Javascript中“ new”关键字的限制

来自分类Dev

在淘汰订阅功能中确定此关键字的目标

来自分类Dev

关于Javascript中的“ this”关键字的困惑

来自分类Dev

JavaScript避免使用新关键字

来自分类Dev

关键字中的JavaScript对象冒号

来自分类Dev

在JavaScript中创建新对象时,何时需要括号和新关键字?

来自分类Dev

JavaScript`of`关键字(for ... of循环)

来自分类Dev

使用反射从功能中删除同步的关键字

来自分类Dev

Python中的裸词/新关键字

来自分类Dev

如何从scala.js访问新的javascript关键字?

来自分类Dev

“类型”是JavaScript中的关键字吗?

来自分类Dev

理解JavaScript中的类关键字

来自分类Dev

新关键字在Spring Framework中的作用

来自分类Dev

在以下代码中关键字功能是必需的:

来自分类Dev

如何使用“ |” Specflow功能表中的关键字

来自分类Dev

在列表中搜索关键字并创建新列表

来自分类Dev

在淘汰订阅功能中识别此关键字的目标

来自分类Dev

关于Javascript中的'this'关键字的困惑

来自分类Dev

在javascript中使用(this)关键字添加新属性

来自分类Dev

在JavaScript中创建新对象时,什么时候需要括号和新关键字?

来自分类Dev

return关键字在javascript中的意义

来自分类Dev

使用反射从功能中删除同步的关键字

来自分类Dev

在以下代码中关键字功能是必需的:

来自分类Dev

javascript中const关键字的用法

来自分类Dev

JavaScript 使用 (this) 关键字

来自分类Dev

Javascript继承链中的'this'关键字

来自分类Dev

如何在javascript中的新样式匿名函数中访问此关键字

Related 相关文章

热门标签

归档