将chr添加到Prototype数字中

时间:2011-06-05 18:57:32

标签: javascript

我有以下功能:

var chr = function(X) {
   return String.fromCharCode(X)
}

但我想使用i.chr()而不是chr(i)。

问:如何将chr()添加到数字原型?

3 个答案:

答案 0 :(得分:2)

Number.prototype.chr = function() {
   return String.fromCharCode(this);
}

var n = 33;
console.log(n.chr());

http://jsfiddle.net/CXWeV/

此外,正如布莱恩指出的那样,以下内容将起作用:

console.log((33).chr());
console.log(Number(33).chr());

但是,以下内容不起作用:

33.chr();

编辑:虽然正如Gumbo所指出的那样,但确实如此:

33..chr();

同时检查该属性是否已存在(请参阅Erik's answer以了解其他方法):

if (!Number.prototype.chr) {
    Number.prototype.chr = function() {
       return String.fromCharCode(this);
    }
}

答案 1 :(得分:1)

正常的方式,真的。请注意在括号中包围数字(或将其存储在变量中)的重要性,因为点通常表示小数点:

Number.prototype.chr = function () {
  return String.fromCharCode(this);
}

alert((97).chr()); // alerts "a"

我不确定这是否适用于所有浏览器,但我认为确实如此。

Interactive Example

答案 2 :(得分:1)

if (!Number.prototype.hasOwnProperty('chr')) {
   Number.prototype.chr = function() {
      return String.fromCharCode(this);
   };
}

要使用此值,数字必须位于变量中或包含在括号中。请注意,将标量数转换为Number对象(称为装箱)会产生开销。如果您在相同的值上重复进行转换,则需要先使用Number()将其显式转换为对象。

请注意,在某些情况下,简单地执行String.fromCharCode可能更容易或更清晰。