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