Javascript文档成员变量

时间:2012-09-15 19:09:24

标签: javascript variables dom

我对JavaScript很新,当我发现可以用这种语法创建变量时,我正在玩它:

document.foo = 'bar'.

从我所知道的,它的优势在于,当我做类似的事情时:

if (document.foo)
     do something;

如果尚未启动变量,则解释器不会抛出异常。

我不知道但想知道的是,创建这样的变量的术语是什么。它只是全局变量,成员变量还是新类型。我也想知道是否有任何理由我不想以这种方式创建变量。

所以任何想要发表大师建议的人都会受到赞赏。

2 个答案:

答案 0 :(得分:1)

在Javascript中,有primitive个值,如数字,字符串和布尔值。 Javascript中的其他所有内容都是object

对象可能包含属性,例如my_array.length,但它们可能包含my_array.pop()等方法。

在Javascript中,方法和属性可以相当自由地添加,除了少数例外。

现在 - 有擦 -

Javascript环境本身提供了native objects,例如ObjectArrayNumber等等。

然后有host objects由运行Javascript的系统提供。在浏览器中,主机对象包括document以及一些可能的其他对象。

host object搞砸可能会失败 - 所有赌注都会被取消。除了非常标准化和公开的方式之外,将它们弄得一团糟是非常的不良做法。

老实说,只有var你的变量。如果需要,您可以创建某种options变量,并在其中添加免费更改属性......如下所示:

var options = {};

options.foobar = true;

if (options.foobar) {
  alert("You have chosen a Foobar! Congrats");
}

if (!options.fizzban) {
  alert("You have not chosen to play cards with Captain Kirk");
}

答案 1 :(得分:0)

简短回答:该术语是隐含声明。

稍微臃肿的回答:尽管创建变量是完全合法的,但是当应用于面向对象的编程和记录软件的能力时,存在一些缺点。

如果您的对象在运行时具有不同的结构配置,则软件的状态很难预测并且维护代码变得越来越难。

我的建议是:使用某种继承模型或使用javascripts原型体系结构提前声明(并设置明智的默认值!)。这样可以更轻松地记录文档,还可以查看软件用途的心理模型。

JS继承的应用程序的一个很好的介绍可以在john resig这里找到:http://ejohn.org/blog/simple-javascript-inheritance/