Показать сообщение отдельно
  #6 (permalink)  
Старый 19.07.2009, 16:50
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от Vladimir
Взгляните на пример из первого поста.
Простейший вариант будет примерно таким:
var F = function(x) {
	return {
		plus: function(y) {
			x += y;
			return this;
		},
		minus: function(y) {
			x -= y;
			return this;
		},
		getResult: function() {
			return x;
		}
	};
};

alert(
F(10).plus(5).minus(3).getResult()
);


Он плох тем, что при каждом вызове F создается новый объект, тем самым забивается память браузера.

Вариант получше:
var F = function(x) {
	return new F._f(x);
};

F._f = function(x) {
	this.x = x;
};
F._f.prototype.plus = function(y) {
	this.x += y;
	return this;
};
F._f.prototype.minus = function(y) {
	this.x -= y;
	return this;
};
F._f.prototype.getResult = function(y) {
	return this.x;
};


alert(
F(10).plus(5).minus(3).getResult()
);
Ответить с цитированием