Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.02.2015, 22:48
Интересующийся
Посмотреть профиль Найти все сообщения от kotlov-net
 
Регистрация: 20.02.2015
Сообщений: 13

Решено ___________________
name="global"
someObject={
 name: "someObject",
 test: function(){alert(this.name)}
}

o=function(object){
 return function(arg){
   return object[arg]
 }
}(someObject)

someObject.test()
o("test")()

//>>>> someObject
//>>>> global

Почему this во втором случае связывается с глобальным объектом? Это разве логично?

UPD решено

Последний раз редактировалось kotlov-net, 20.02.2015 в 23:53.
Ответить с цитированием
  #2 (permalink)  
Старый 20.02.2015, 23:00
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,584

Да. Именно так работает js. Откуда функцию вызовешь - такой this и будет, что весьма удобно.
function func(){ alert(this) }

var obj1 = {
    toString: function(){return '[object Obj1]'},
    func : func
}
var obj2 = {
    toString: function(){return '[object Obj2]'},
    func: func,
    obj1: obj1
}

func() //Window ибо равносильно window.func()
obj1.func() //Obj1
obj2.func() //Obj2
obj2.obj1.func() //Obj1
__________________
29375, 35

Последний раз редактировалось Aetae, 20.02.2015 в 23:06.
Ответить с цитированием
  #3 (permalink)  
Старый 20.02.2015, 23:44
Профессор
Отправить личное сообщение для caetus Посмотреть профиль Найти все сообщения от caetus
 
Регистрация: 23.09.2014
Сообщений: 197

успокойся
сделать так и все будет работать

name="global"
someObject={
 name: "someObject",
 test: function(){alert(this.name)}
}
 
o=function(object){
 return function(arg){
   if(!arg) return;
   return object[arg]()
 }
}(someObject);
 

someObject.test()
o("test")
 
//>>>> someObject
//>>>> global

Последний раз редактировалось caetus, 20.02.2015 в 23:47.
Ответить с цитированием
  #4 (permalink)  
Старый 20.02.2015, 23:49
Интересующийся
Посмотреть профиль Найти все сообщения от kotlov-net
 
Регистрация: 20.02.2015
Сообщений: 13

Aetae,
Вообще то да, Вы правы, это я туплю, на ночь глядя. Все правильно работает, так и должно быть. Сорри, спасибо еще раз
Ответить с цитированием
  #5 (permalink)  
Старый 20.02.2015, 23:50
Интересующийся
Посмотреть профиль Найти все сообщения от kotlov-net
 
Регистрация: 20.02.2015
Сообщений: 13

caetus,
Да, это я знаю, спасибо.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Баг в Опере (select и onclick) Dimox Opera, Safari и др. 20 25.01.2013 00:39
Нужна помощь с доработкой JS, исправить 1 баг, можно даже за $ Kanzaki Элементы интерфейса 18 14.09.2011 21:21
Очередной баг jQuery? monolithed jQuery 8 27.01.2011 10:16
Забавный баг (фича?) в Chrome / Safari Cr@ZyBoY Opera, Safari и др. 11 22.02.2010 17:26
Баг с jpeg в ie6 JsLoveR Элементы интерфейса 20 28.01.2010 20:57