哇,高手,第一次知可以这么用,不是,有点像C的东东,
如下:
var s = alert;
s(s)

解决方案 »

  1.   

    var X=function (x)
    {
        var s=String,f='fromCharCode',x=x^820309;
        return(s[f](x))
    };
    alert(X(820259));
    //------------------------
    //以上等同于
    //------------------------function X1(x){
    var s = String; //把String赋给s
    x = x^820309; // 位操作 return s.fromCharCode(x); //相当于String.fromCharCode(x);
    }alert(X(820259));
    alert(X1(4654161));     在JS,任何变量或函数对象都是数据,对象名也可以看作函数名,也可以在变量间传递,所以才有了上面的var s=String;这样new s()的效果跟new String()是一样的,也可以使用String的静态方法fromCharCode,另外,JS的对象的属性的访问中有一种较特殊,就像是集合的方法的引用,String["fromCharCode"](97);这个的效果跟String.fromCharCode(97)的效果是一样的,因为对象的成员方法,也是一个function,或者说是一个Function对象的实例,它也是一种数据类型,所以也可以看作是对象的成员属性,只不过它的typeof值是function,就比如说window["alert"]("aaaaaaaa");跟window.alert("aaaaaaaa")是一样的。
         打完收工。