jquery中,有这个方法

   var obj = {};
$.data(obj,
'name','jake'); console.info($.data(obj,'name')); console.info(obj);

输出结果

由此可知,$.data(),里面有三个参数时,是赋值的,里面有两个参数时是取值,一贯的jquery作风。

这里模仿一下

    var $data = (function(){
        var expando = 'jQuery'+String(Math.random()).replace(/\D/g, '');
        
        function getCache(cache){
            return cache[expando]=cache[expando]||{};
        }
        
        function setValue(obj,name,value){
            obj[name]=value;
        }
        
        function getValue(obj,name){
            return obj[name];
        }
        
        var data=function(cache,nameAgr,valueArg){
            var obj = getCache(cache);
            //    有第三个参数表示是赋值
            if(valueArg&&valueArg.length>0){
                setValue(obj,nameAgr,valueArg);
            }else{//没有第三个参数表示是取值
                return getValue(obj,nameAgr);
            }
        }
        return data;
    })();
    
    var obj2 = {};
    
    $data(obj2,'name','jake');
    $data(obj2,'age','12');
    
    console.log($data(obj2,'name'));
    
    console.log(obj2);

结果

 

就模仿了这两个方法。

原文

http://www.cnblogs.com/ellisonDon/archive/2012/08/12/2635316.html

 

posted on 2016-05-29 14:03  woqiaoxun  阅读(296)  评论(2编辑  收藏  举报