让IE8浏览器支持function.bind()方法


Posted in Javascript onOctober 16, 2014

IE8支持function.bind()方法

<script type="text/javascript"> 
if (!Function.prototype.bind) { 
Function.prototype.bind = function (oThis) { 
if (typeof this !== "function") { 
throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable"); 
} 
var aArgs = Array.prototype.slice.call(arguments, 1), 
fToBind = this, 
fNOP = function () {}, 
fBound = function () { 
return fToBind.apply(this instanceof fNOP && oThis 
? this 
: oThis, 
aArgs.concat(Array.prototype.slice.call(arguments))); 
}; 
fNOP.prototype = this.prototype; 
fBound.prototype = new fNOP(); 
return fBound; 
}; 
} 
</script>

主要解决“百度地图”官网上的例子的bug,摘取如下代码:

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
<style type="text/css"> 
body, html {width: 100%;height: 100%;margin:0;font-family:"微软雅黑";} 
#allmap{width:100%;height:500px;} 
p{margin-left:5px; font-size:14px;} 
</style> 
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=39b92e64ae5622663ceceaccd8ab8eb1"></script> 
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> 
<title>给多个点添加信息窗口</title> 
<script type="text/javascript"> 
if (!Function.prototype.bind) { 
Function.prototype.bind = function (oThis) { 
if (typeof this !== "function") { 
throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable"); 
} 
var aArgs = Array.prototype.slice.call(arguments, 1), 
fToBind = this, 
fNOP = function () {}, 
fBound = function () { 
return fToBind.apply(this instanceof fNOP && oThis 
? this 
: oThis, 
aArgs.concat(Array.prototype.slice.call(arguments))); 
}; 
fNOP.prototype = this.prototype; 
fBound.prototype = new fNOP(); 
return fBound; 
}; 
} 
</script> 
</head> 
<body> 
<div id="allmap"></div> 
<p>点击标注点,可查看由纯文本构成的简单型信息窗口</p> 
</body> 
</html> 
<script type="text/javascript"> 
// 百度地图API功能 
map = new BMap.Map("allmap"); 
map.centerAndZoom(new BMap.Point(116.417854,39.921988), 15); 
var data_info = [[116.417854,39.921988,"地址:北京市东城区王府井大街88号乐天银泰百货八层"], 
[116.406605,39.921585,"地址:北京市东城区东华门大街"], 
[116.412222,39.912345,"地址:北京市东城区正义路甲5号"] 
]; 
var opts = { 
width : 250, // 信息窗口宽度 
height: 80, // 信息窗口高度 
title : "信息窗口" , // 信息窗口标题 
enableMessage:true//设置允许信息窗发送短息 
}; 
for(var i=0;i<data_info.length;i++){ 
var marker = new BMap.Marker(new BMap.Point(data_info[i][0],data_info[i][1])); // 创建标注 
var content = data_info[i][2]; 
map.addOverlay(marker); // 将标注添加到地图中 
marker.addEventListener("click",openInfo.bind(null,content)); 
} 
function openInfo(content,e){ 
var p = e.target; 
var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat); 
var infoWindow = new BMap.InfoWindow(content,opts); // 创建信息窗口对象 
map.openInfoWindow(infoWindow,point); //开启信息窗口 
} 
</script>
Javascript 相关文章推荐
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
Apr 12 Javascript
各情景下元素宽高的获取实现代码
Sep 13 Javascript
jQuery之日期选择器的深入解析
Jun 19 Javascript
javascript计时器事件使用详解
Jan 07 Javascript
JavaScript实现点击按钮就复制当前网址
Dec 14 Javascript
js对象浅拷贝和深拷贝详解
Sep 05 Javascript
vue elementUI tree树形控件获取父节点ID的实例
Sep 12 Javascript
React 组件中的 bind(this)示例代码
Sep 16 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
Apr 26 Javascript
vant IndexBar实现的城市列表的示例代码
Nov 20 Javascript
JavaScript实现联动菜单特效
Jan 07 Javascript
12 种使用Vue 的最佳做法
Mar 30 Javascript
jquery获取radio值(单选组radio)
Oct 16 #Javascript
js数组的基本操作(很全自己整理的)
Oct 16 #Javascript
Javascript中的关键字和保留字整理
Oct 16 #Javascript
javascript复制粘贴与clipboardData的使用
Oct 16 #Javascript
复制网页内容,粘贴之后自动加上网址的实现方法(脚本之家特别整理)
Oct 16 #Javascript
jquery获取radio值实例
Oct 16 #Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
Oct 16 #Javascript
You might like
一个程序下载的管理程序(一)
2006/10/09 PHP
php实现session自定义会话处理器的方法
2015/01/27 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
PHP设计模式之单例模式定义与用法分析
2019/03/26 PHP
用JavaScript隐藏控件的方法
2009/09/21 Javascript
javascript 函数调用的对象和方法
2010/07/01 Javascript
JS动态调用方法名示例介绍
2013/12/18 Javascript
jQuery中;function($,undefined) 前面的分号的用处
2014/12/17 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
2016/01/23 Javascript
WEB前端开发框架Bootstrap3 VS Foundation5
2016/05/16 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
详解Sea.js中Module.exports和exports的区别
2017/02/12 Javascript
JS完成画圆圈的小球
2017/03/07 Javascript
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
vuex存值与取值的实例
2019/11/06 Javascript
javascript中可能用得到的全部的排序算法
2020/03/05 Javascript
vue 插槽简介及使用示例
2020/11/19 Vue.js
[37:45]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第二场 12.09
2020/12/11 DOTA
Python中使用glob和rmtree删除目录子目录及所有文件的例子
2014/11/21 Python
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
Ubuntu下创建虚拟独立的Python环境全过程
2017/02/10 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
解决Pycharm下面出现No R interpreter defined的问题
2018/10/29 Python
Python从Excel中读取日期一列的方法
2018/11/28 Python
Python实现批量执行同目录下的py文件方法
2019/01/11 Python
pandas.read_csv参数详解(小结)
2019/06/21 Python
Python中判断子串存在的性能比较及分析总结
2019/06/23 Python
Python基于traceback模块获取异常信息
2020/07/23 Python
Pycharm制作搞怪弹窗的实现代码
2021/02/19 Python
台湾母婴用品限时团购:妈咪爱
2018/08/03 全球购物
法律专业应届生自荐信范文
2014/01/06 职场文书
应届生求职信范文
2014/05/26 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
Consul在linux环境的集群部署
2022/04/08 Servers