LINUX.ORG.RU

node.js

 


1

1

Привет ребята!!! Я решил изучить javascript и за одно ноду!!!
Подскажите ошибку в коде.

var rp  =  {ip: 1, 
	     getip : function()
	     {
		 this.ip = 2;
		 console.log(rp.ip);
		 console.log(this.ip);
	     }}
setTimeout(rp.getip, 1);

У меня в консоль выдает

1
2
А по задумке должно.
2
2
Что тут не так ?

★★

Последнее исправление: Int0l (всего исправлений: 3)

self= this

Oh shit. Каждый сходим с ума по своему

Сплошное непонятно, непонятна суть, непонятно что ты хочешь сделать, если не понимаешь что такое объекты и свойства.

MDN is your friend

invokercd ★★★★
()
Ответ на: комментарий от invokercd

Ну вот убрал this, что-бы тебе было понятнее.

Int0l ★★
() автор топика
Ответ на: комментарий от invokercd

rp.ip и this.ip Ссылаются на одно и то же свойство одного и того же объекта так? Так почему они выводят разные значения. Вот что мне интересно.

Int0l ★★
() автор топика

setTimeout(rp.getip.bind(rp), 1)

Kilte ★★★★★
()
Ответ на: комментарий от Int0l

Чувак, я тебе не зря советовал MDN:

MDN => setTimeout

MDN => this

Тогда бы ты знал что setTimeout использует global scope, поэтому ты в первом случае получаешь rp.ip свойство, а во втором уже [global].ip.

Надеюсь так понятнее:

Function.prototype.apply.call(rp.getip, rp); //2,2 this === rp
Function.prototype.apply.call(rp.getip, global); //1,2 this === global
rp.getip.call(rp); //2,2

invokercd ★★★★
()
Последнее исправление: invokercd (всего исправлений: 1)
Ответ на: комментарий от invokercd

Я знаю что такое область видимости, что такое замыкания, область видимости функций.

Int0l ★★
() автор топика
Ответ на: комментарий от invokercd

Я правильно понял что ты считаешь, что когда в моем примере я вызываю console.log(this.ip);
То я обращаюсь не к объекту rp, а переменной ip в глобальном контексте?

Int0l ★★
() автор топика

У меня в консоль выдает

все правильно

А по задумке должно

значит думаешь не в ту сторону

umren ★★★★★
()
Ответ на: комментарий от Int0l

Внезапно, setTimeout - это функция, и если ты знаешь что такое [EC] то должнен знать какой this будет использован при вызове функции.

//Всегда ваш, captain obvious

invokercd ★★★★
()

Увидел двойной пробел с двух метров, с вертушки загасил ноут, дальше не читал.

dizza ★★★★★
()

Разобрался (спасибо всем кто подсказывал).

Int0l ★★
() автор топика
Ответ на: комментарий от Int0l

rp.ip и this.ip Ссылаются на одно и то же свойство одного и того же объекта так?

Нет, почитай на MDN что такое this.

И про new тоже заодно.

tensai_cirno ★★★★★
()
Последнее исправление: tensai_cirno (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.