2つの目的が異なるため、ここでは「どちらか一方」はありません。
はこの考えてみます。OOPで
var Melee = function(){
//private property
var tool = 'hammer';
//private method
var attack = function(){
alert('attack!');
};
//public property
this.weapon = 'sword';
//public methods
this.getTool = function(){
return tool; //can get private property tool
};
this.setTool = function(name){
tool = name; //can set private property tool
};
};
var handitem = new Melee();
var decoration = new Melee();
//public
handitem.weapon; //sword
handitem.getTool(); //hammer
handitem.setTool('screwdriver'); //set tool to screwdriver
handitem.getTool(); //is now screwdriver
//private. will yield undefined
handitem.tool;
handitem.attack();
//decoration is totally different from handitem
decoration.getTool(); //hammer
handitem.weapon
を外部からアクセス可能、 "公共の財産" です。私がMelee
のこのインスタンスを作成した場合、公開されているので、weapon
にアクセスして変更できます。
handitem.tool
は「私有財産」です。オブジェクトの内部からのみアクセスできます。可視ではなく、アクセス可能ではなく、外部から(少なくとも直接的に)変更可能でもありません。それにアクセスしようとすると、返信されます。undefined
handitem.getTool
は「公開方法」です。それはオブジェクトの内側にあるため、プライベートプロパティtool
にアクセスし、外部からアクセスできます。プライベート世界への橋の一種。
handitem.attack
はプライベートメソッドです。すべてのプライベートなもののように、内部からのみアクセスできます。この例では、attack()
を呼び出す方法はありません(攻撃から安全ですのでD:
)明らかに、別の目的を果たすことは明らかです。 'this.tool'を使う理由がなければ、' var tool'を使います。 – Blender
ありがとう、ブレンダー!彼らが奉仕するさまざまな目的について精巧に考えてもらえますか? – Crashalot
クラスの外で 'var tool 'を使うことはできないので、クラスの外で使われることはありません。 'this.tool'はクラスの外から呼び出されるように作られています。 – Blender