Javascript - 自定义原型 - 语法错误

时间:2016-12-08 08:10:54

标签: javascript prototype

我正在尝试使用Javascript开发自定义原型(请参阅下面的代码)。

如果我用 $ 字符替换 $ 字符,此代码可以正常工作。但是,我更喜欢在 $ 字符上使用 $ 字符。如果我使用字符,我会收到以下错误消息:

  

未捕获的SyntaxError:无效或意外的令牌

是否有任何方法或解决方法可使下面的代码与字符一起使用?

<!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>

1 个答案:

答案 0 :(得分:5)

JavaScript允许标识符中的各种字符(details in the spec here)。标识符的第一个字符比后续字符更受限制,但仍然允许很多自由。

第一个字符必须是$_或带有&#34; ID_Start&#34;的Unicode字符。根据Unicode标准(spec link)的属性。 The character ₹没有ID_Start,因此您无法将其用作JavaScript标识符的第一个字符。

后续字符必须为$_或带有&#34; ID_Continue&#34;的Unicode字符。属性。 FWIW,您根本无法在标识符中使用该字符,因为它也没有ID_Continue。

为什么$(一个卢比标志)和£等其他货币符号允许¥(一个美元符号) ,这样的不是吗?纯粹是因为Brendan Eich认为在标识符中允许$并使其成为例外是有用的。

如果您愿意,可以使用Rs。不太好,但是......

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