Показать сообщение отдельно
  #4 (permalink)  
Старый 04.07.2013, 00:07
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от rumwi
Да, здесь я действительно ерунду написал. Извиняюсь.
Сообщение от rumwi
thisTest = this.test
а здесь, конечно, нет

http://learn.javascript.ru/this
и множество других статей, где описано с чем это едят

основа - функция создаёт новый контекст и this определяется во время вызова
в твоём примере контекстом является объект document, ты вызываешь функцию (метод) ready этого объекта, this соответственно указывает на него
у меня контекстом является window

<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script>
$(document).ready(function(){

var x = {
	//name: $("#project td.first").text(),
	test: "Test string",
	thisObject: this,
    thisTest :this.test
        }

alert(this) // -> [Object HTMLDocument]
alert(console.log(this)) // -> undefined

})
</script>


function X() {
	var that = this;
	this.test = "Test string";
	this.thisTest1 = function (str) {
		return this.test + str;
	}
	this.thisTest2 = function (str) {
		return this.thisTest1(that.test);
	}
	this.thisTest3 = function () {
		return this.thisTest1.call(this, this.test);
	}
}
alert(new X().test);
alert(new X().thisTest1(1));
alert(new X().thisTest2());
alert(new X().thisTest3());
Ответить с цитированием