Показать сообщение отдельно
  #10 (permalink)  
Старый 27.08.2011, 21:49
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Обыграть то, что в случае вызова через new F сначала создается пустой объект, а потом уже к нему применяется конструктор. В случае с call'ом к объекту уже применён конструктор.
function F(x) {
	if (this.constructor == F && this.sealed === undefined) {
		this.x = x;
	}
	this.sealed = true;
	return this.x;
}

var f = new F(3), obj = {x: 5};

alert(f.x); //3

alert(F.call(obj)); //5
alert(F.call(f)); //ожидаем получить 3, а будет 3
Ответить с цитированием