`

javascript 函数绑定

 
阅读更多
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>code</title>
 <script>



var obj = {
 name:'东尼大木',
 getName : function(){
    alert(this.name);
 }
}


window.onload = function(){
    //这里期望输出 东尼大木 其实是 周杰伦
    document.getElementById('btn1').onclick = obj.getName; 
 
 
}



 </script>
</head>
<body>
  <button id='btn1' name='周杰伦'> btn </button>
 </body>
</html>

   下面的代码可以输出东尼大木

 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>code</title>
	<script>
		

var obj = {
 name:'东尼大木',
 getName : function(){
    alert(this.name);
 }
}

//绑定作用域
function bind(fn,context){
     return function(){
    return fn.apply(context,arguments);
 }
}
window.onload = function(){
   document.getElementById('btn1').onclick = bind(obj.getName,obj); 
     
	
	
}





	</script>
</head>
<body>
  <button id='btn1' name='周杰伦'> btn </button>
 </body>
</html>

   这就是闭包的一个用处,在很多地方可以用到,比如需要返回一个回调函数,但是你希望作用域是你指定的。这样的缺点是性能不太好,容易造成内存泄露,慎用。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics