OO Javascript。物业问题

时间:2011-11-14 21:37:34

标签: javascript

我来自OOP语言(Java,C#和PHP)。我只是在Javascript中做了一些OOP,我对如何定义属性感到非常困惑。下面的代码基于Mozilla代码示例,与我正在使用的代码相同。我还包括我认为应该声明属性的方式,但似乎不起作用。

var myExtension = {

    // This is how I thought it'd be done
this.instructionServers = new Array(
    "http://server.com/json.php",
),


init: function() {  
    // The event can be DOMContentLoaded, pageshow, pagehide, load or unload.  
    if(gBrowser) {
        gBrowser.addEventListener("DOMContentLoaded", this.onPageLoad,false);  
    }
},  

onPageLoad: function(aEvent) {  
    var doc = aEvent.originalTarget; // doc is document that triggered the event  
    var win = doc.defaultView; // win is the window for the doc  

    // Skip frames and iFrames
    if (win.frameElement) return;

    // Code removed
}  

3 个答案:

答案 0 :(得分:3)

你应该

var myExtension = {
    instructionServers: ["http://server.com/json.php"],

    // ...

};

或者,您也可以直接在JavaScript中指定属性,如

myExtension.instructionServers = ["http://server.com/json.php"];

这会使instructionServers数组属性为myExtension。然后,您可以使用

获取属性的值
myExtension.instructionServers

myExtension['instructionServers']

另外,请注意,在JavaScript中,您可以使用方便的数组文字。

['hello', 3]

等同于更详细和沮丧的

new Array('hello', 3)

答案 1 :(得分:0)

var myExtension = {
        url: 'http://server.com/json.php',
        init: function() {
            alert( this.url );
        }
}

myExtension.init();

技术上,init本身就是一个属性,只是类型函数的属性。声明一个字符串属性只需设置一个与上面相同的方法。

要在对象内引用该属性,请使用

  

答案 2 :(得分:0)

您正在使用对象表示法(想想JSON),因此没有“=”。它应该是:

instructionServers:[“http://server.com/json.php”],