JavaScript では、規約が重要です。プライベート プロパティまたはメソッドは、 のように最初にアンダースコアで定義されます_private
。いくつかのヘルパーを使用すると、クラスを簡単に作成できます。この設定は簡単だと思います。必要なのは、inherits
クラスを拡張するためのヘルパーだけです。複数の引数を使用する代わりに、オブジェクトを渡しprops
、継承されたクラスでarguments
. たとえば、モジュール パターンを使用すると、次のようになります。
Function.prototype.inherits = function(parent) {
this.prototype = Object.create(parent.prototype);
};
var Person = (function PersonClass() {
function Person(props) {
this.name = props.name || 'unnamed';
this.age = props.age || 0;
}
Person.prototype = {
say: function() {
return 'My name is '+ this.name +'. I am '+ this.age +' years old.';
}
};
return Person;
}());
var Student = (function StudentClass(_super) {
Student.inherits(_super);
function Student(props) {
_super.apply(this, arguments);
this.grade = props.grade || 'untested';
}
Student.prototype.say = function() {
return 'My grade is '+ this.grade +'.';
};
return Student;
}(Person));
var john = new Student({
name: 'John',
age: 25,
grade: 'A+'
});
console.log(JSON.stringify(john)); //=> {"name":"John","age":25,"grade":"A+"}
console.log(john.say()); //=> "My grade is A+"
プライベート変数の「問題」については、インスタンス プロパティの規則に固執し、他のすべてのプライベートに必要な場合はクロージャーを使用してください。