У меня есть компоненты 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';