JavaScript の関数とモジュールをよりよく理解しようとしています。具体的には、独自のデータ型を作成する最良の方法を理解しようとしています。以下に、Rectangle1.js と Rectangle2.js の 2 つのファイルのリストと、これをよりよく理解するために作成したサンプル出力を示します。
コードを構造化して独自のデータ型を作成するには、これらのうちどれ (またはその他の方法) が最適な方法であるかを理解するために、コミュニティの助けが必要です。
Rectangle1.js
function Rectangle(x,y,w,h) {
width = w;
height = h;
this.area1 = function() {
return width*height;
}
}
Rectangle.prototype.area2 = function() {
return width * height;
};
Rectangle.area3 = function() {
return width * height;
}
exports.Rectangle = Rectangle;
Rectangle2.js
var RECTANGLE = (function(my) {
function init(x,y,w,h) {
this.w = w;
this.h = h;
}
function area() {
return this.w * this.h;
}
my.init = init;
my.area = area;
return my;
})(RECTANGLE || {});
exports.RECTANGLE = RECTANGLE;
サンプル相互作用
var r2 = require('Rectangle2.js');
r2.RECTANGLE.init(1,2,3,4);
r2.RECTANGLE // ...can see the private properties
r2.RECTANGLE.area() // returns 12
var r1 = require('Rectangle1.js');
r1 // shows area3 in r1
var rect = new r1.Rectangle(1,2,3,4);
rect // shows area1 in rect
rect.area1() // visible in methods, spits out 12
rect.area2() // not visible in methods, spits out 12
r1.Rectangle.area3() // not visible in rect, spits out 12