gpt4 book ai didi

JavaScript 全局对象引用与 'this'

转载 作者:行者123 更新时间:2023-11-29 20:00:23 24 4
gpt4 key购买 nike

我正在开发一个作为对象字面量编写的应用程序框架,为了简单起见,我想做两件事:

  1. 让对象在全局范围内可用
  2. 对所有引用使用对象名称(全局定义)(相对于使用 this)

因此,我进行了一些测试,进行了研究,但没有找到不采用这种方法的任何充分理由。我的问题是 - 我错过了什么吗?性能测试实际上似乎有利于我的方法,并且从后勤层面来看我没有看到任何问题。查看其他框架,我看到了混合,但我知道 this 引用受到许多程序员的推崇。

供引用...

我的方法的一个非常简单的例子:

var myobj = {

someVal: 'foo',

init: function(){
// Make myobj available globally
window.myobj = myobj;
// Fire off a method
myobj.doStuff();
},

doStuff: function(){
// Just print out the contents...
console.log(myobj.someVal);
}
}

myobj.init();

请注意所有引用都是全局的,而不是this

就像我说的,我已经看到了这种情况的混合,我想我只是想知道这是否会导致长期问题,或者这是否是无事生非。

最佳答案

就限制而言,首先想到的是您只能拥有该对象的一个​​实例。尝试初始化一个新对象会清除该对象。

使用 this 而不是全局变量名的另一个原因是,即使变量名发生变化,this 也会指向正确的对象。

如果您真的希望它成为名称永不更改的“创建一次”全局对象,那么这种技术在技术上并没有错。但它不能在任何其他情况下使用。考虑编写在需求发生变化时更具适应性的代码可能更明智(例如,如果您使用的库会导致与所选变量名称发生命名冲突)

使用 this 可以让您灵活地重命名变量并在不同的上下文中传递它,而不必担心跟踪变量名称。如果出现命名冲突,它也将使更改变得容易。

关于JavaScript 全局对象引用与 'this',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14801743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com