javascript
1 2 function Triangle(){ 3 4 var _base = 5; 5 var _height = 4; 6 7 Object.defineProperty( 8 this, 9 'base', 10 { 11 get:function(){ 12 return _base; 13 }, 14 set: function(base){ 15 16 if(typeof base === 'number' && base > 0){ 17 18 _base = base; 19 } 20 } 21 } 22 23 ); 24 25 Object.defineProperty( 26 this, 27 'height', 28 { 29 get:function(){ 30 return _height; 31 }, 32 set:function(height){ 33 if(typeof height === 'number' && height > 0){ 34 _height = height; 35 } 36 } 37 } 38 39 ); 40 41 }; 42 43 Triangle.prototype.getArea = function(){ 44 return this.base * this.height / 2; 45 }; 46 47 var t = new Triangle(); 48 49 console.log('三角形の底辺:' + t.base);//結果:5 50 console.log('三角形の高さ:' + t.height);//結果:4 51 console.log('三角形の面積;' + t.getArea());結果:10
上記のコードのObject.definePropertyに関してお聞きしたいことがあるのですが、「t.base」「t.height」を出力した際、Triangleオブジェクトの「 _base 」「_height」に設定されている値が出力されたのですが、definePrpertyは 、「var t = new Triangle();」とした時のコンスタラクタにより実行されているということなのでしょうか?また、definepropertyのsetterを使用したい場合にはどのようにすれば実行させることができるのでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/14 12:47
2018/09/14 12:56 編集
2018/09/14 14:21