函数式JavaScript编程的疑问??

事件处理程序使用函数式编程也许是最直观的函数作为值得应用。我知道function可以作为参数传递

ContractedBlock.gif ExpandedBlockStart.gif Code
<div id="aaa">
    
<script language="javascript" type="text/javascript">
ExpandedBlockStart.gifContractedBlock.gif    
function Button(clickFunction) {
    
this.button = document.createElement("button");
    
this.button.appendChild(document.createTextNode("Press aaa!"));
    
this.button.onclick = clickFunction;
}

ExpandedBlockStart.gifContractedBlock.gif
var bt = new Button(function() { alert("函数作为参数"); });
document.getElementById(
"aaa").appendChild(bt.button);
    
</script>
</div>

 

这个例子看的懂!但下面的列子就有点看不懂了

 

ContractedBlock.gif ExpandedBlockStart.gif Code
<div id="bbb">
    
<script language="javascript" type="text/javascript">
ExpandedBlockStart.gifContractedBlock.gif    
function Button(value) {
    
this.value=value;
    
this.button=document.createElement("button");
    
this.button.appendChild(document.createTextNode("Press bbb!"));
  
//this.button.οnclick=function(){alert(this.value);}//如果你执行它你就会发现提示框中间是空的。为什么会这样呢?其实                                                        原因在于JavaScript的可见性规则。当onclick函数被执行时this指                                                        向的是按钮的DOM节点而非自定义的按钮对象。

ExpandedSubBlockStart.gifContractedSubBlock.gif    
this.button.onclick=(function(v){
ExpandedSubBlockStart.gifContractedSubBlock.gif                                
return function(){alert(v);};
                                }
)(this.value);
}


var bt = new Button("函数式编程");
document.getElementById(
"bbb").appendChild(bt.button);
    
</script>
</div>

特别是这一段怎么理解啊?!? 哪位大侠解释下

 this.button.οnclick=(function(v){
        return function(){alert(v);};
        })(this.value);

 

转载于:https://www.cnblogs.com/hemood/archive/2008/11/07/1329331.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值