this - как обратиться



  • Как обратиться к глобальному объекту this? Пока использую новый класс с различными функциями, расширяющими функционал BAS, но хотел бы расширить класс, из-под которого вызываются все стандартные функции BAS типа url или render. Попробовал
    BASExtended.prototype.__proto__ = this.prototype;,
    но не работает, т.к. вряд ли правильно так делать, нужно BASExtended.prototype.__proto__ = *имя_класса_this*.prototype;
    Но имя класса this неизвестно, переменной window тоже нет, чтобы хоть как-то его посмотреть.


  • administrators

    @blackhacker this должен быть виден.
    Если он где-то перекрылся в другом контексте, можно сохранять его в выполняя код

    window = this
    

    И обращаться к window



  • @support this то виден, но ведь он создан из какого-то класса или объекта. Так вот какое название у этого класса/объекта? Единственное, что удалось выудить - имя конструктора объекта [Object global], но переменную global не видит. Хочется например переопределить какой-либо из методов BAS, и дополнить его
    Например переопределить метод load, чтобы функция принимала реферер:

    BASExtended.prototype.load = function (u, ref) {
        header('Referer', ref)!
        load(u)!
    };
    

    BASExtended же будет расширять класс this, но вот какой класс у this, неизвестно


  • administrators

    @blackhacker глобальный объект создается один раз. Можно не переопределять его прототип, а просто присвоить метод экземпляру уже созданного объекта.
    Тут сложность в том, чтобы создать функцию, которую можно вызывать без _call
    Для этого функция должна иметь последним аргументом callback и передавать его в последнюю асинхронную функцию обернув в _get_function_body

    this.load_old = this.load
    this.load = function(url,ref,callback){
       this.load_callback = callback
       this.load_url = url
       header('Referer', ref)!
       load_old(this.load_url, _get_function_body(this.load_callback))
    }
    

    После выполнения следующего кода, можно вызывать

    load("https://www.whatismyreferer.com/","google")!
    


  • @support Спасибо за ответ, все понял) Сложно оказалось в плане переопределения, лучше оставлю как есть, отдельным классом


  • administrators

    @blackhacker Вообще переопределение не самая лучшая практика. http://stackoverflow.com/questions/14034180/why-is-extending-native-objects-a-bad-practice


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.