Решено ___________________
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 решено |
Да. Именно так работает 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
|
успокойся
сделать так и все будет работать
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
|
Aetae,
Вообще то да, Вы правы, это я туплю, на ночь глядя. Все правильно работает, так и должно быть. Сорри, спасибо еще раз:) |
caetus,
Да, это я знаю, спасибо. |
| Часовой пояс GMT +3, время: 07:48. |