2016-12-08 2 views
3

Я пытаюсь разработать собственный прототип в Javascript (см. Код ниже).Javascript - пользовательский прототип - ошибка синтаксиса

Этот код работает отлично, если я заменить символ с $ характер. Тем не менее, я предпочитаю использовать символ над $ персонаж. Если я использую характер я получаю ниже сообщение об ошибке:

Uncaught SyntaxError: Invalid or unexpected token

Есть ли способ или обходной путь, чтобы сделать ниже код работать с характер?

<!DOCTYPE html> 
<html lang="en-IN"> 
<head> 
    <meta charset="UTF-8" /> 
<script> 
    function ₹(input){ 
     this.input=input; 
     var customPrototype={}; 
     customPrototype.upper=function(){ 
      return input.toUpperCase(); 
     } 
     customPrototype.count=function(){ 
      return input.length; 
     }; 
     customPrototype.lower=function(){ 
      return input.toLowerCase(); 
     } 
     customPrototype.__proto__ = ₹.prototype; 
     customPrototype.constructor = ₹; 
     return customPrototype; 
    } 
    ₹.prototype = { 
     top: function() { 
      return this.upper(); 
     }, 
     size: function() { 
      return this.count(); 
     }, 
     bottom: function() { 
      return this.lower(); 
     } 
    }; 
</script> 
</head> 
<body> 
    <script> 
     console.log(₹("ProgrAmmeR").top()); 
     console.log(₹("ProgrAmmeR").bottom()); 
     console.log(₹("ProgrAmmeR").size()); 
    </script> 
</body> 
</html> 
+0

Я не совсем уверен, но вы дважды проверили, сохранен ли фактический файл для рекламы UTF-8? – JoschuaSchneider

+0

ясно, что ₹ не такой мощный, как $: p –

ответ

5

JavaScript допускает широкий диапазон символов в идентификаторах (details in the spec here). первый символ идентификатора немного более ограничен, чем последующие, но при этом допускает большую свободу.

Первый символ должен быть $, _ или Юникода символов со свойством «ID_Start» в соответствии со стандартом Unicode (spec link). The character ₹ не имеет ID_Start, поэтому вы не можете использовать его в качестве первого символа идентификатора JavaScript.

Последующие символы должны быть $, _ или символом Юникода с свойством «ID_Continue». FWIW, вы не можете использовать этот символ в идентификаторе вообще, потому что он также не имеет ID_Continue.

Так почему $ (знак доллара) допускается, когда (а рупия знак) и другие символы валют как £, , ¥, и такое не? Чисто, потому что Брендан Эйх думал, что было бы полезно разрешить $ в идентификаторах и сделать для него исключение.

Вы можете использовать Rs, если хотите. Не так хорошо, но ...

function Rs() { } 
Rs.prototype = ...; 
+2

Существует также [этот полезный инструмент] (https://mothereff.in/js-variables), который проверяет имена переменных Unicode. (Это действительно подтверждает, что ['₹'] (https://mothereff.in/js-variables#%E2%82%B9) не является допустимым именем переменной.) – Frxstrem

+0

@Frxstrem - я проверил код с по умолчанию имя 'ಠ_ಠ' показано в этом URL-адресе, и оно отлично работает. К сожалению, характер, который я предпочитаю, недействителен :( –

+0

TJ Crowder - ссылки, которые вы упоминали в своем сообщении, в данный момент недоступны. –

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