`$this` 的这两种用法有何不同?
Posted
技术标签:
【中文标题】`$this` 的这两种用法有何不同?【英文标题】:How are these 2 uses of `$this` different? 【发布时间】:2020-09-15 01:18:34 【问题描述】:我目前正在研究一些 AngularJS 代码,我注意到 $this
在 AngularJS 工厂的定义中有两种不同的用法:
module.factory('f_sys', function(...)
var $this = data : id: "123" ;
...
function _updateSystem(d)
return $this.data.id == "123"; // (true)
$this.init = function()
...
...
return $this;
);
这里发生了什么? init
函数是否被添加为 var $this
对象的另一个键?它是否像另一个函数一样被处理(例如_updateSystem
)?
【问题讨论】:
如果没有看到您的代码的完整版本,我们无法真正回答这个问题。在省略的部分中,$this
显然发生了一些事情。
【参考方案1】:
init
不像其他函数。就像你说的:它成为$this
对象的属性。所以你可以打电话给$this.init()
,但是打电话给_updateSystem
你不能写$this._updateSystem()
。当您将$this
返回给调用者时,调用者可以调用init()
,但不能调用_updateSystem()
。
$this
的构造与您将其写在一个作业中一样:
var $this =
data:
id: "123"
,
init: function()
/* ... */
或者使用更现代的 (ES6) 语法:
const $this =
data:
id: "123"
,
init()
/* ... */
【讨论】:
以上是关于`$this` 的这两种用法有何不同?的主要内容,如果未能解决你的问题,请参考以下文章
主方法中的 String[] args 与 String... args 有何不同?
大开测试:性能- 基于目标和手动场景测试有何联系和不同(连载20)
大开测试:性能- 基于目标和手动场景测试有何联系和不同(连载20)