Этот указатель из внутренней функции

У меня есть компоненты JavaScript со следующей архитектурой:

var MyComponent = function(params)
{
    setup(params);


    this.doSomething()
    {
        // doing something
    };

    function setup(params)
    {
        // Setup

        // Interaction logic
        var _this = this; // "this" points to DOMWindow, not to created object
        $(".some-element").click(function(){
            _this.doSomething(); // it craches here, because of above
        });
    }
};

Когда что-то происходит, контролируемое логикой взаимодействия, иногда я должен перенаправить выполнение "общедоступным" методам компонента.

В этой ситуации , у меня проблема с указателем this.

Пример кода демонстрирует это:

var Item = function()
{
    this.say = function()
    {
        alert("hello");
    };
    this.sayInternal = function()
    {
        _sayInternal();
    };
    function _sayInternal()
    {
        this.say();
    };
};

Чтобы проверить это,

  • Создайте объект:

var o = new Item ();

  • Это отлично работает :

o.say (); // предупреждает "привет"

  • Это вылетает:

o.sayInternal ();

Я получаю сообщение об ошибке:

TypeError: Результат выражения 'this.say' [undefined] не является функцией.

Я думаю, такое поведение имеет место, потому что функция _sayInternal () объявлена ​​ (а не назначена объекту, например "this. Как определить SVG в поддержке элемента HTML img? javascript: Как определить SVG в поддержке элемента HTML img? Я пробовал это, но не получается: x = new Image (); x.onload = function () {if (x.width) {alert ('svg в теге img поддерживается!'); } }; x ....

javascript: Как определить поддержку SVG в HTML-элементе img?

Я пробовал это, но не работает:

x = new Image();
x.onload = function(){
  if (x.width) {
   alert('svg in img tag supported!');
  }
};
x.src = 'test.svg';
6
задан Alnitak 15 February 2011 в 11:24
поделиться