js 使用技巧的一些技巧
来源:互联网 发布:Java equals默认实现 编辑:程序博客网 时间:2024/04/29 12:55
看百度地图源码的一些收获
/** * 集中派发事件函数 * * @private * @param {Object} instance 派发事件的实例 * @param {String} type 派发的事件名 * @param {Json} opts 派发事件里添加的参数,可选 */ _dispatchEvent: function(instance, type, opts) { type.indexOf("on") != 0 && (type = "on" + type); var event = new baidu.lang.Event(type); if (!!opts) { for (var p in opts) { event[p] = opts[p]; } } instance.dispatchEvent(event); },
拼接字符串 :
'<div class="BMapLib_bubble_title" id="BMapLib_bubble_title' + this.guid + '"></div>',
匿名函数:
(function() { ......此函数自动执行,对数据进行包裹,对外提供访问方法,内部有属性,方法,相当于是一个类})();
判断
对于js:
var a;//或者a=null
if(a)
alert(1);
else
alert(0)
都会执行alert(0);只声明没有初始化 js会认为不是object
if(!this.dom || !this.dom.content){ return; }
this.target = target || null;
if ('string' == typeof id || id instanceof String) { return document.getElementById(id); } else if (id && id.nodeName && (id.nodeType == 1 || id.nodeType == 9)) { return id; }
baidu.setAttr = baidu.dom.setAttr; baidu.dom.setAttrs = function (element, attributes) { element = baidu.dom.g(element); for (var key in attributes) { baidu.dom.setAttr(element, key, attributes[key]); } return element; }; baidu.setAttrs = baidu.dom.setAttrs; baidu.dom.create = function(tagName, opt_attributes) { var el = document.createElement(tagName), attributes = opt_attributes || {}; return baidu.dom.setAttrs(el, attributes); };
if(!overlay || !(overlay instanceof BMap.Marker)){ return; }
/** * json对象转化为url字串 * @param {Json} json 需要转化的json对象 * @param {Function} encode 编码函数 */ MapWrapper._jsonToQuery = function(json, encode){ var s = []; encode = encode || function(v){return v}; for (var n in json){ s.push(n + "=" + encode(json[n])); } return s.join("&"); }
/** * 请求管理模块 */ MapWrapper._SearchRequestMgr = { /** * 请求地址 */ COORD_CONVERT_URL: "http://api.map.baidu.com/ag/coord/convert", /** * 请求函数 * @param {Function} cbk 回调函数 * @param {Object} params 附加请求参数, 在回调调用时传递给回调函数 * @param {Object} userData 用户自定义数据, 在回调调用时传递给回调函数 * @param {String} path 附加请求路径,可选 */ request: function(cbk, params, userData, path){ var timeStamp = (Math.random() * 100000).toFixed(0);// 生成随机数 MapWrapper._cbkMount["_cbk" + timeStamp] = function(json){// 全局回调函数 userData = userData || {}; cbk && cbk(json, userData); delete MapWrapper._cbkMount["_cbk" + timeStamp]; }; path = path || ""; var reqParam = MapWrapper._jsonToQuery(params, encodeURIComponent); var me = this, url = me.COORD_CONVERT_URL + path + "?" + reqParam + "&ie=utf-8&oue=1&res=api&callback=BMapLib.MapWrapper._cbkMount._cbk" + timeStamp; me.createScript(url); }, /** * 动态创建script标签,发送请求 * @param {String} url script标签对应的url */ createScript: function(url) { var script = document.createElement("script"); script.src = url; script.setAttribute('type', 'text/javascript'); script.setAttribute('charset', 'utf-8'); // 脚本加载完成后进行移除 if (script.addEventListener) { script.addEventListener('load', function(e) { var t = e.target; t.parentNode.removeChild(t); }, false); } else if (script.attachEvent) { script.attachEvent('onreadystatechange', function(e) { var t = window.event.srcElement; if (t && (t.readyState == 'loaded' || t.readyState == 'complete')) { t.parentNode.removeChild(t); } }); } // 使用setTimeout解决ie6无法发送问题 setTimeout(function() { document.getElementsByTagName('head')[0].appendChild(script); script = null; }, 1); } };
$("show").onclick = function(){ searchInfoWindow.show(); }
this._marker = anchor; !this._markerDragend && this._marker.addEventListener("dragend",this._markerDragend = function(e){ me._point = e.point; me._adjustPosition(me._point); me._panBox(); me.show(); });充分利于&&,前面是false后面就不执行
/** * json对象转化为url字串 * @param {Json} json 需要转化的json对象 * @param {Function} encode 编码函数 */ MapWrapper._jsonToQuery = function(json, encode){ var s = []; encode = encode || function(v){return v}; for (var n in json){ s.push(n + "=" + encode(json[n])); } return s.join("&"); }
- js 使用技巧的一些技巧
- js的一些技巧
- 常用的一些JS技巧
- 一些有用的JS技巧
- 一些有用的JS技巧
- 一些JS的操作技巧
- 关于JS的一些技巧
- JS/Jquery的一些技巧
- 一些实用的js技巧
- js的一些优化技巧
- JS的一些小技巧
- JS的一些小技巧
- js的使用技巧
- 使用JS操作页面表格,元素的一些技巧
- Jasperreport的一些使用技巧
- Linux的一些使用技巧
- javascript的一些使用技巧
- statspack的一些使用技巧
- MySQL定时任务
- 什么是云存储?
- .全国各地的工程师 程序员特点分析,搞笑幽默--快来对号入座
- memcache使用及安装
- MFC无边框的窗体实现用鼠标拖动窗体边缘实现窗体大小变化
- js 使用技巧的一些技巧
- java多线程总结
- iOs 合并静态库
- 执行class 文件 main 方法的.sh 方法
- DCOM遇到错误“无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动”的解决
- JavaBean --基础
- 关于Gstrteamer udp和 v4l2src测试问题
- c# 实现zip格式文件的压缩和解压缩
- sasmgr get_info -D /dev/sasd1 -q raid 查看RX6600 硬件 raid 信息