fromCharCode疑惑

移位密码也就是密码中的字母会按照指定的数量来做移位。

一个常见的案例就是ROT13密码,字母会移位13个位置。由'A' ↔ 'N', 'B' ↔  'O',以此类推。

写一个ROT13函数,实现输入加密字符串,输出解密字符串。

所有的字母都是大写,不要转化任何非字母形式的字符(例如:空格,标点符号),遇到这些特殊字符,跳过它们。

解:

function rot13(str) { // LBH QVQ VG!   

var uni = [];

for(var i =0;i64&&uni[i]<91)

{

uni[i]=str.charCodeAt(i)+13;

if(uni[i]>90)

{uni[i]-=26;}

}

}

var fi = String.fromCharCode.apply(null,uni);

return fi;

}


***********************


疑惑:fromCharCode的用法到底是什么意思?为什么要用apply?apply方法的传值为什么是null和uni呢?
尝试了
fromCharCode(uni)

String.fromCharCode(uni)

结果都是报错,而把变量去掉,随便写一个数字,却能得到输出结果。

那咋整?难道要重新写一个遍历吗???


fromCharCode疑惑_第1张图片

随后看到这篇文章:http://www.cnblogs.com/zzsdream/p/5057131.html

那么我从头开始分析:

官方文档中是这样的:fromCharCode(num1,...,num n)

是的,变量不是一个数组,而是一组数字。数组是无法传到fromCharCode方法里面的(哭

而且fromCharCode是一个静态方法

静态方法不能被实体调用
举个栗子:

varBaseClass =function() {};

BaseClass.prototype.method1 =function(){

alert(' This is a instance method ');

}

varinstance1 =newBaseClass();

instance1.method1();//This is a instance method

弱机我理解的意思就是freeCharCode前面必须加String.

你想arr.freeCharCode()?不存在的。

Function.apply(obj,args)方法能接收两个参数

obj:这个对象将代替Function类里this对象

args:这个是数组,它将作为参数传给Function(args-->arguments)

比如String.freeCharCode(obj,args),obj是String里面一个this对象,可有可无(但当obj有具体参数时,obj当然要有的),而args里面的值会逐个传给String

可能说得不是很清楚,等以后回头再想想。

你可能感兴趣的:(fromCharCode疑惑)