Для методов prototype
существует ли безопасный способ гарантировать, что this
всегда является самим объектом (вне проверки instanceof
и ошибкой).Обеспечьте «этот» контекст в прототипном методе
var Dialog = function() {};
Dialog.prototype.open = function() {
var open = this;
// how do ensure "this" is always the Dialog
console.log(open);
};
С помощью этого кода любой пользователь может ошибочно «принудить» контекст быть неверным. Например:
var pointer = new Dialog().open;
pointer(); // "this" would become Window
Я пытаюсь найти способ справиться с этой внутренне так, что я не должен выдавать ошибку или полагаться на пользователя, чтобы всегда делать правильные вещи.
Пользователь всегда может вызывать pointer.call(dialog)
, но это означает, что для диалога требуется отдельный указатель, и это хороший пример бремени для пользователя, а не для меня, автора.
Вы намерены иметь несколько экземпляров диалогового окна? Вы хотите разрешить пользователю использовать экземпляр «Dialog» напрямую? ('var d = new Dialog(); d.open();') –
Это не то, о чем ваш класс/библиотека действительно беспокоиться. Если пользователь неправильно вызывает/вызывает метод, это их проблема. Они должны правильно использовать язык, чтобы все функционировало правильно. –
Да, может быть несколько экземпляров, и я разрешу пользователю повторно использовать экземпляр. – helion3