ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptでクラスを定義する方法_基礎知識
これは私が最初に書いた方法です:
function Dog(){ this.name = 'hachi'; } Dog.prototype = { makeNoise:function(){ alert('wangwangwang'); } };
後で、もう少し複雑で不必要に思われる別の書き方を見つけました。
function Dog(){ var privateVariable = 'secret'; var fn = function(){ //... } fn.prototype = { makeNoise:function(){ alert('wangwangwang'); } } return fn; }
ここでの Dog 関数は実際にはクラス作成関数であり、実際の Dog クラスを返します。
これを行う利点は、カプセル化が向上することだと思います。
たとえば、ここでの privateVariable はプライベート変数です:
var d = new Dog; d.privateVariable //undefined
さらに、最初の例の最後に文を追加すると、
Dog.prototype = { //e...WTF?? }
こうすることで、犬はもう犬ではなくなります~
その後の理解:
新しいクラスを作成する上記のメソッドは、プロトタイプ オブジェクトを直接オーバーライドします。このようにして、プロトタイプの元の組み込み属性 (引数、呼び出し、適用など) はなくなります。
新しいクラスを作成する次の方法の方が良いと思われます:
var Dog = function(name){ this.name = name; var privateVariable = 'you cannot see me.'; this.getPrivate = function(){return privateVariable;}; }