Actually,simplicity is not simple

发现JS里个很有意思的特性

发现JS里个很有意思的特性,看下面的代码

[javascript]
var arr=['a', 'b','c'];
alert(arr.sort);
alert(arr.sort());

这两行alert看起来差不多,但效果完全不一样了,第一个是作为arr的属性调用sort的;第二个则是作为arr的一个方法调用的。alert出来的结果自己不一样了。

再想想JS中对对象的调用方法:

[javascript]
var obj = {a:’aa’,b:’bb’}
alert(obj.a);
alert(obj['a']);

所以我想使用访问数组的方法去访问对象的方法应该也可以:

[javascript]
var arr=['a', 'b','c'];
alert(arr['sort']);

出来的结果同样是作为arr的属性被调用,这样也成,呵呵,还真有意思。

再想想这个特性要怎么利用。回到发现这特性之初,sort()本来是array的排序方法,在看人家的代码时发现这样写,似乎是用来判断arr是否为数组类型的对象。

再回想下,前几天面试时教官同样问到这问题,当时一无所知的囧样,郁闷!

回到话题,所以这特性可用来判断数据类型的,可以找些只有一种类型的数据才有的方法来判断;还有的话就是可以用来看JS的开发者的写的代码了!^_^////

JavaScript对css的一些操作

[javascript]
function $random(min, max){
    return Math.floor(Math.random() * (max - min + 1) + min);
};

// JavaScript对css的一些操作
var CSSClass = {
    has: function(el, className){
        if (typeof el == "string") el = document.getElementById(el);
        var cl = el.className;
        if(!cl) return false;
        if(cl == el) return true; //只有一个class
        return (' ' + className + ' ').indexOf(' ' + cl.toString() + ' ') > -1;
    },

    add: function(el, className){
        if (typeof el == "string") el = document.getElementById(el);
        if (!CSSClass.has(el, className))
            el.className = el.className == ''?className:(el.className + ' ' + className);
    },

    remove: function(el, className){
        if (typeof el == "string") el = document.getElementById(el);
        if (CSSClass.has(el, className))
            el.className = CSSClass.trim( (' ' + el.className + ' ').replace(' '+className+' ', ' ') );
    },

    toggle: function(el, className){
        CSSClass.hasClass(el, className) ? CSSClass.removeClass(el, className) : CSSClass.addClass(el, className);
    },
    trim: function(str){
        return str.replace(/(^\s*)|(\s*$)/g, '');
    }
}

var els = document.getElementById('content')[0];
var els = getElementsByClass('article', els, 'div');
for(var i=0,j=els.length; i<j; i++){
    var h3 = els[i].getElementsByTagName('h3')[0];
    var cls = 'title' + $random(1, 8).toString();
    CSSClass.add(h3, cls);
}

不用多说什么,知道的看看就知道,不知道的说了也没用,过点时间搞成个小库,自己好用,呵呵!