js 公用插件,教科书级的写法

项目有个地方要调用接口,几个地方都用到这个接口的数据。于是便要封装一个公共的js文件供使用者调用。

// 车系全景图
var vrImgForBitauto = {
    CheZhanClassID:55555,
    CsID:0,
    Interface:'http://webapi.photo.com/Cooperate/api/v1/pano/GetPanoList?',
    GetDataCallBack:'vrImgForBitauto.GetVRData',
    CallBack:'',
    IntiDataForEntry : function(csid,callback){
        this.CallBack = callback;
        if(csid>0)
        {this.CsID=csid;}
        var date = new Date();
        var fixMin = Math.floor(date.getMinutes()/5)
        var version = date.getFullYear().toString() + (date.getMonth() + 1).toString() + date.getDate().toString() + date.getHours().toString()+'v'+fixMin;
        document.write(unescape('%3Cscript type="text/javascript" src="'+this.Interface+'classId='+this.CheZhanClassID+'&serialBrandId='+this.CsID+'&callback='+this.GetDataCallBack+'&v='+version+'"%3E%3C/script%3E'));
    },
    GetVRData : function(data){
        if(data!=undefined&&data.Code!=undefined&&data.Code==0&&data.Data!=undefined)
        {
            if(this.CallBack!='')
            {
                try{
                    this.CallBack(data.Data);
                }catch(err){}
            }
        }
    }
}

// 使用者示例:
// 取某个车系的车展是否有全景返回数组 单一入口用索引0 调用Demo 参数:车系Id和回调函数 
if(vrImgForBitauto!=undefined&&vrImgForBitauto.IntiDataForEntry!=undefined)
{
    vrImgForBitauto.IntiDataForEntry(3999,function (vrImgs){    
        if(vrImgs.length>0)
        {
            document.write('<br/>车系ID: '+vrImgs[0].ModelId);
            document.write('<br/>包ID: '+vrImgs[0].SceneBagId);
            document.write('<br/>包名字: '+vrImgs[0].SceneBagName);
            document.write('<br/>图片ID: '+vrImgs[0].ImageId);
            document.write('<br/>封面地址: '+vrImgs[0].CoverImageUrl);
            document.write('<br/>全景封面: '+vrImgs[0].PanoThumbUrl);
            document.write('<br/>全景地址: '+vrImgs[0].PanoUrl);
        }
    });
}

该写法方便客户端调用,不受接口变动的限制。只需要关心业务逻辑就可以了