Jump to content
  • 0

насчет this


Hoax
 Share

Question

var calc = {
show:function() {
var a = +prompt('a',0);
var b = +prompt('b',0);

},

sum:function() {
alert(this.a+this.;
}



};
calc.show();
calc.sum();

Вот объект, он не пашет, я уже скоко инфы перерыл но таки и не понял что именно выполняет this. Вездле пишут что он обращается к объекту из метода, но что значит к объекту? В объекте может быть сколько угодно свойств, значений, методов. И как вообще присвоить что именно тот мой this обращается к переменной??? Плз, объясните подробно.

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

Блин случайно удалил свой пост...в общем суть, как наглядный пример ->

var calc = {
show:function() {
var a = +prompt('a',0);
var b = +prompt('b',0);
return this.a = a, this.b = b;
},

sum:function() {
alert(this.a+this.b );
}



};
calc.show();
calc.sum();

У функций локальная область видимости, и то что вы объявили а и b в теле метода(функции) объекта calc еще не говорит о том, что они станут его свойствами. Также следует обратить внимание что JavaScript язык чувствительный к регистру букв (this.B != this.b )

Edited by Svatov
Link to comment
Share on other sites

  • 0

Почитайте про области видимости и про замыкания.

<script type="text/javascript">
var calc = {
a:0, b:0,

show:function() {
this.a = +prompt('a',0);
this.b = +prompt('b',0);

},

sum:function() {
alert(this.a+this.B);
}



};
calc.show();
calc.sum();
</script>

Link to comment
Share on other sites

  • 0
объект, посредством которого вызывается метод, становится значением ключевого слова this в теле метода

объект.метод() // то, что слева от точки и будет this

Если там ничего нет, this будет глобальным объектом (window)

В теле конструктора this ссылается на новосозданный объект.

Edited by nerv
Link to comment
Share on other sites

  • 0

Вы имеете ввиду вот это?

***В JavaScript существует четыре основных способа появления идентификатора в области видимости:

Внутренние механизмы языка: например, во всех областях видимости доступны this и arguments.

Формальные параметры: у функций могут быть именованные формальные параметры, область видимости которых ограничена телом функции.

Объявления функций: объявленные в виде function foo() {}.

Объявления переменных: например, var foo;.***

Но также написано что функции создают новую область функции

Edited by Hoax
Link to comment
Share on other sites

  • 0

я вот понять не могу, где вы находите столь бестолковые толкования.

http://javascript.ru/tutorial/object/thiskeyword

тут посмотрите + желательно посмотреть дальше этой ссылки этот ресурс.

Link to comment
Share on other sites

  • 0

Ну В общем - то понятно что есть локальные переменные и глобальные (которым не присвоено var). Если есть глобальные переменные, машина ищет переменные объявленные через var, если их нету, то переходит к глобальным. Т.е. в своем примере я мог просто убрать var, но насколько я понял это было бы не очень хорошо.

1)Тогда допустим у меня есть одна функция(1) и другая(2), как мне обратиться из (2) в (1), а именно к переменным, данным. (т.е. они не должны быть вложенные друг в друга как на примере (2), просто должны быть отдельными)

2)И еще есть допустим функция


function container() {

function part1() {
var a =1;

}

function part2() {
return var a;
alert(a);
}




}
container();

2) 2 пример бред знаю, но по-другому показать не смог. Просто кучу статей перерыл, везде пишут непонятно, показывают 500 примеров С Pert,C# - о которых я в душе хз. В общем мне главное понять как обращаться (

Edited by Hoax
Link to comment
Share on other sites

  • 0

например, так

function container() {

var temp;

function part1() {
var a = 1;
temp = a;
}

part1();

function part2() {
alert( temp );
}

part2();

}

container();

или так

function container() {

function part1() {
var a = 1;
var b = 2;
return {
'a': a,
'b': b
};
}

function part2() {
var x = part1();
alert( x.b );
}

part2();

}

container();

Edited by nerv
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy