Javascript全局变量或对象变量
我更喜欢为我的所有网站声明一个Javascript文件。我试图减少全局变量的使用。下面是我的示例,在这两种情况下,每个对象都有一个myName字段Javascript全局变量或对象变量,javascript,Javascript,我更喜欢为我的所有网站声明一个Javascript文件。我试图减少全局变量的使用。下面是我的示例,在这两种情况下,每个对象都有一个myName字段 我想知道它们何时初始化 在记忆和效率方面,哪一个更有效 对于变量a,声明a.myName是否与全局“var myName=Rebecca”相同 谢谢它们将在第一次遇到语句时初始化。在a中,'Rebecca'被初始化为myName键的值。在b中,它只是myName(匿名)函数内部的数据a会稍微更有效,因为它避免了函数调用。在这个简单的例子中,我还发现它
谢谢它们将在第一次遇到语句时初始化。在
a
中,'Rebecca'
被初始化为myName
键的值。在b
中,它只是myName
(匿名)函数内部的数据a
会稍微更有效,因为它避免了函数调用。在这个简单的例子中,我还发现它更具可读性
我发现将所有内容放在一个文件中的选择是有问题的。在某些情况下,您需要模块化设计。由于您担心效率(尽管可能过早),请注意,如果页面包含不需要的代码,那么拥有一个大文件实际上会影响性能。它们将在第一次遇到语句时初始化。在
a
中,'Rebecca'
被初始化为myName
键的值。在b
中,它只是myName
(匿名)函数内部的数据a
会稍微更有效,因为它避免了函数调用。在这个简单的例子中,我还发现它更具可读性
我发现将所有内容放在一个文件中的选择是有问题的。在某些情况下,您需要模块化设计。由于您担心效率(尽管可能过早),请注意,如果页面包含不需要的代码,那么拥有一个大文件实际上会影响性能。a没有任何意义,因为您正在记录函数引用。B是一种方法,因为您实际上使用()调用该方法。a没有任何意义,因为您正在记录函数引用。B是一种方法,因为您实际上是在使用()调用该方法。1)除非您在事件处理程序中声明对象,否则在浏览器中处理脚本时会初始化它们。在这种情况下,对象是在执行事件脚本时创建的 2) 就效率而言,
a
可能会更有效率。请注意,在第一种情况下使用a.myName
,在第二种情况下使用b.myName()
3) 不可以。如果为对象的属性指定值,则必须始终通过对象获取该值。在这种情况下,a.myName
或a['myName']
1)除非您在事件处理程序中声明对象,否则在浏览器中处理脚本时会初始化它们。在这种情况下,对象是在执行事件脚本时创建的
2) 就效率而言,a
可能会更有效率。请注意,在第一种情况下使用a.myName
,在第二种情况下使用b.myName()
3) 不可以。如果为对象的属性指定值,则必须始终通过对象获取该值。在这种情况下,a.myName
或a['myName']
我相信这些将以相同的方式初始化(即当达到代码时)。不同的是,当它们被初始化时发生了什么,当它们的数据被实际需要时,负载被放置在哪里
对我来说,这在很大程度上取决于你对myName
的期望。如果它只是一个字符串,我会避开这个函数,选择a。另一方面,如果涉及大量逻辑,并且可能不需要调用该逻辑(例如,如果只有当用户单击按钮或应用程序达到某个状态时才执行该逻辑),我会选择b。据我所知,该函数确实会消耗内存,不会被垃圾收集(这是一个负数),但它也不会消耗CPU资源,直到实际需要它(这可能是一个巨大的加号)
我不确定我是否理解这个问题,但我想说这是不一样的。如果a
的唯一成员是myName
,那么这两个成员是等价的(都占据了全局名称空间。但是如果您有多个属性,节省的空间就显而易见了。从您的示例中,我想您显然理解这一点,所以我可能也不理解这个问题
我相信它们将以相同的方式初始化(即当到达代码时)。不同的是,当它们被初始化时发生了什么,以及当它们的数据实际需要时,加载在哪里
对我来说,这在很大程度上取决于你在myName
中所期望的内容。如果它只是一个字符串,我会避开函数,选择选项a。另一方面,如果涉及大量逻辑,并且可能不需要调用该逻辑(例如,如果它只在用户单击按钮或应用程序达到某个状态时执行),我会选择b。据我所知,该函数确实会消耗内存,不会被垃圾收集(这是一个负数),但在实际需要之前它也不会消耗CPU资源(这可能是一个巨大的加号)
我不确定我是否理解这个问题,但我想说它不一样。如果a
的唯一成员是myName
,那么两者是等价的(两者都占用了全局名称空间。但是如果您有多个属性,那么节省的空间就显而易见了。从您的示例中,我认为您清楚地理解了这一点,因此我可能也不理解这个问题
实际上,当我需要这些变量时,我已经准备好使用我的内存和cpu了。我只是想懒洋洋地加载我的字符串变量。我是l的超级粉丝
var a = {
myName : 'Rebecca' ,
sayHello : function() {
console.log(this.myName);
}
};
var b = {
myName : function() {
return 'Rebecca';
},
sayHello : function() {
console.log(this.myName());
}
};