0

以下のような Node 型を実装したかったのですが、関数ではないプロパティを非表示または保護して、クラス外から上書きできないようにしたいと考えています。これは、Mootools hide and protect プロパティで可能ですか? Mootools での非表示と保護の違いは何ですか?

var Node = new Class({

    initialize : function(name){
        this.globalId = container.globalId++;
        this.name = name || 'unnamed Node';
    },

    globalId : null,

    siblingId : null,

    name : null,

    parentNode: null,

    childrenNodes : [],

    addChild : function(child){
        //ensure it is a Node object
        if(!instanceOf(child,Node)){
            throw new Exception('Not a Node',this.name+':\nNode.globalId = '+this.globalId+
            "\nAttempting to add a child node that is not a 'Node' type!");
        }
        child.parentNode = this;
        child.siblingId = this.children.length;
        this.children.push(child);
    },

    removeChild : function(child){
        //ensure the child is my child!
        if(child.parentNode !== this){
            throw new Exception('Lost Child',this.name+':\nNode.globalId = '+this.globalId+
            "\nAttempting to remove Node:\n"+child.name+":\nNode.globalId = "+child.globalId);
        }
        this.childrenNodes.splice(child.siblingId,1);
    }

});
Node.globalId = 0;
4

1 に答える 1

1

非表示のプロパティが必要な場合は、次のように取得できます。

var Node = (function() { 
    var someProperty; // This variable and any others you create here are available only inside this function's scope

    return new Class({
        // You have access to those variables here
    });
}()); // call the function immediately. It returns your new class.
于 2012-06-18T03:56:34.073 に答える