Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 11.12.2011, 00:57
Аватар для Livanderiaamarum
Профессор
Отправить личное сообщение для Livanderiaamarum Посмотреть профиль Найти все сообщения от Livanderiaamarum
 
Регистрация: 10.12.2011
Сообщений: 290

12

Последний раз редактировалось Livanderiaamarum, 11.12.2011 в 01:09.
Ответить с цитированием
  #12 (permalink)  
Старый 11.12.2011, 00:58
Аватар для Livanderiaamarum
Профессор
Отправить личное сообщение для Livanderiaamarum Посмотреть профиль Найти все сообщения от Livanderiaamarum
 
Регистрация: 10.12.2011
Сообщений: 290

12





моё недоумение основано лишь на том что человек достаточно туп чтобы понять что я не написал РОВНО символом = а написал его словом РОВНО. из контекста это можно было понять, что впрочем все адекватные люди поняли это....

Последний раз редактировалось Livanderiaamarum, 11.12.2011 в 01:09.
Ответить с цитированием
  #13 (permalink)  
Старый 11.12.2011, 00:59
Аватар для Livanderiaamarum
Профессор
Отправить личное сообщение для Livanderiaamarum Посмотреть профиль Найти все сообщения от Livanderiaamarum
 
Регистрация: 10.12.2011
Сообщений: 290

12

Последний раз редактировалось Livanderiaamarum, 11.12.2011 в 01:09.
Ответить с цитированием
  #14 (permalink)  
Старый 11.12.2011, 01:08
Аватар для Livanderiaamarum
Профессор
Отправить личное сообщение для Livanderiaamarum Посмотреть профиль Найти все сообщения от Livanderiaamarum
 
Регистрация: 10.12.2011
Сообщений: 290

Сообщение от Magneto Посмотреть сообщение
В твоем случае и во всех случаях в JavaScript оператор "=" - oператор присваивания. Этот оператор присваивает значение правого операнда левому.

А равно это "==" - оператор сравнения на равенство. Этот оператор сравнивает два операнда и возвращает Булев результат.

И "===" - оператор тождества. Этот оператор сравнивает два операнда на равенство и возвращает Булев результат. И значения операндов, и их тип данных должны быть идентичны, чтобы оператор возвратил истину.

Так что тебе все верно сказали, и твои обзывания неуместны.
Дело в том что ровно это = а два ровно это ==, исходя из данного контекста моего повествования, если слушатель конечно не дурачек
Ответить с цитированием
  #15 (permalink)  
Старый 11.12.2011, 01:54
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от Livanderiaamarum
В чем дело тогда, почему возвращается обьект?
Что? Возвращается ссылка на него.
var a = {};
(a = a).b = 5;
alert(a.b)
Ответить с цитированием
  #16 (permalink)  
Старый 11.12.2011, 08:40
Аватар для Livanderiaamarum
Профессор
Отправить личное сообщение для Livanderiaamarum Посмотреть профиль Найти все сообщения от Livanderiaamarum
 
Регистрация: 10.12.2011
Сообщений: 290

var foo = {
  bar: function () {
    alert(this);
  }
};
 
foo.bar(); // Reference, OK => foo
(foo.bar)(); // Reference, OK => foo
 
(foo.bar = foo.bar)(); // Value => global?



в последней строчке скобки (foo.bar = foo.bar) возвращают Значение обьекта, а не ссылку на него. Почему?

Последний раз редактировалось Livanderiaamarum, 11.12.2011 в 08:42.
Ответить с цитированием
  #17 (permalink)  
Старый 11.12.2011, 10:25
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

эт еще кто из нас дурачек Какие Reference? У вас идет проверка объекта вызова.
var foo = { bar: function() { alert("this === window: " + (this === window) + "\nthis === foo: " + (this === foo)); } };

foo.bar(); // foo
(foo.bar)(); // foo

(foo.bar = foo.bar)(); // window
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #18 (permalink)  
Старый 11.12.2011, 11:15
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от Livanderiaamarum
Значение обьекта, а не ссылку на него. Почему?
Потому что они возвращают ссылку, а не значение объекта.
var foo = {
  bar: function () {
    alert(this);
  }
};

foo.bar.x = "Hello!";

(foo.bar = foo.bar).x = "lalala";

alert(foo.bar.x)
Ответить с цитированием
  #19 (permalink)  
Старый 11.12.2011, 11:40
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Livanderiaamarum,

var foo = function() {
     return this;
};

var bar = {
  baz: function () {
    return this;
  }
};

alert([
    foo(), //Window
    foo.prototype.constructor(), //Object 
    bar.baz(), //Object  
    (bar.baz)(), //Object 
    (bar.baz = bar.baz)(), //Window
    (bar.baz = bar.baz()), //Object
     bar.baz  //Object 
].join('\n'));


Рассмотрим подробнее, что происходит с:
(bar.baz = bar.baz)();

В этом случае, согласно спецификации вызывается метод GetValue().
Это значит, что тип Reference заменяется Function и вызов фунции происходит уже в Window, т.к. this будет null

var bar = {
  baz: function () {
    return this;
  }
};

var foo = bar.baz;
alert([
	foo(), //Window
	(some = bar.baz)(), //Window
	(1, bar.baz)() //Window
].join('\n'));

Последний раз редактировалось monolithed, 11.12.2011 в 11:48.
Ответить с цитированием
  #20 (permalink)  
Старый 11.12.2011, 13:16
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Господа, добрый день

monolithed, разрешите задать два вопроса:
1.
Сообщение от monolithed
В этом случае, согласно спецификации
Можно ссылку?
2.
Сообщение от monolithed
т.к. this будет null
this будет window. Или я не прав?

Livanderiaamarum, практически цитата из книги:
Операции над элементарными типами производятся по значению, а над ссылочными типами – по ссылке.
Числа и логические величины – это элементарные типы; объекты - ссылочные. Массивы и функции – это специализированные типы объектов. Строки сравниваются по значению.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В contains() не подставляется значение переменной Heger jQuery 2 11.12.2011 20:26
Значение переменной salex009 jQuery 1 05.12.2011 16:55
оператор return возвращает значение, а не ссылку. Vertuplatonium Общие вопросы Javascript 4 16.05.2011 14:02