以下のような 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;