プログラミング日記

プログラミング、英語、アメリカ、Apple、自転車とか

JavaScript、this.<method>と<Object>.prototype.<method>の違い。

今日も相変わらず例の本を読みながらJavaScriptの勉強をしている。学習スピードが異常に遅いけれど。

function Triangle() {
	var _base;
	var _height;

	var _checkArgs = function(val) {
		return (!isNaN(val) && val > 0);
	};

	this.setBase = function(base) {
		if(_checkArgs(base)) { _base = base; }
	};

	this.setHeight = function(height) {
		if(_checkArgs(height)) { _height = height; }
	};

	this.getBase = function() { return _base; };
	this.getHeight = function() { return _height; };

	Triangle.prototype.getArea = function() {
		return this.getBase() * this.getHeight() / 2;
	};
}

var t = new Triangle();
t.setBase(70);
t.setHeight(2);
document.writeln(t.getBase() + '<br />')
document.writeln(t.getHeight() + '<br />')
document.writeln(t.getArea());

-実行結果-

70
2
70

Triangleの中で定義する分には、this..prototype.のには違いがないと思う。
ただ、.prototype.はTriangleの外からでも定義できることは違うけど。
文章が読みにくくてすみません。