2013-09-07 3 views
1

Я пытаюсь извлечь JS-функцию в теле моего представления (где она работает нормально) и поместить ее во внешний файл js как объект, на который я могу вызвать метод.Внешний объект JS для возврата тега ссылки

Это должно использоваться Jottings JS email obfuscator, в настоящее время я просто выводя жестко закодированный тег ссылки.

Мое мнение:

<script type="text/javascript" src="/js/email-obfuscator.js">email.encrypt();</script> 

Мой JS файл:

var email = function() 
{ 
    this.encrypt = function() 
    { 
     document.write('<a href="mailto:[email protected]">Support</a>'); 
    } 
}; 

Я не получаю никаких JS ошибки, но ни я получаю никакого вывода, это моя первая попытка создать мой собственный внешний объект JS, любая идея, в которой я ошибаюсь?

ответ

2

метод encrypt это публичный метод вашего класса email - использовать ее, вам нужно создать экземпляр электронной почты

var myEmail = new email(); 
myEmail.encrypt(); 

Если вы хотите придерживаться, как вы в настоящее время называют свой метод encrypt , вам нужно сделать статический метод из него:

var email = function() { 
    // do something 
} 

email.encrypt = function() { 
    document.write('<a href="mailto:[email protected]">ELF Support</a>'); 
} 

Но, Что лучше для вас, зависит от текущего использования, вы должны рассмотреть для себя, если вам нужно несколько экземпляров электронной почты и, возможно, шифрование разных или если он может оставаться статичным.

Update: Почти забыл важную роль: необходимо отделить загрузку файла JS от фактического использования:

<script type="text/javascript" src="js/email-obfuscator.js"></script> 
<script type="text/javascript"> 
    var myEmail = new email(); 
    myEmail.encrypt(); 
</script> 
+0

Я хотел бы иметь возможность запускать один метод (мимолетной параметр электронной почты) на существующем (глобальном) объекте: email.encrypt ('[email protected] '); Спасибо за помощь, я предположил, что вы можете использовать тот же тег скрипта! Я пошел на ваш второй пример: что бы вы сделали, когда у вас есть «// что-то делать»? Это где вы объявляете частные методы? – SteB

+0

Обычно вы добавляете в метод экземпляр и частные переменные, который также является «конструктором» класса. Но вы не можете получить к ним доступ в свой метод 'encrypt', если вы сделаете это статическим способом. [Настоящая статья] (http://www.gediminasm.org/post/using-prototypal-inheritance-in-javascript) является хорошим началом для понимания использования классов, наследования, статических и частных методов, переменных и т. Д. – con

Смежные вопросы