zoukankan      html  css  js  c++  java
  • 通过经典题目来理解多种闭包实现方式

    需求:生成十个按钮,内容分别是1~10,点击每个按钮输出当前的序号,即点击1输出1。

    看不懂,先留着。

    原:http://blog.csdn.net/simoniter/article/details/52515938

    for (var i = 1; i <= 10; i++) {
        var doc = document.createElement('button');
        doc.innerHTML = i;
    
        //错误写法
         doc.onclick = function() {
           console.log(i);
         }
    
        //方法一
        // doc.onclick = function() {
        //     console.log(this.toString());
        // }.bind(i);
    
        //方法二
        // doc.onclick = function (x) {
        //   return function () {
        //     console.log(x);
        //   }
        // }(i);
    
        //方法三
        // doc.onclick = function() {
        //   var x= i;
        //   return function () {
        //     console.log(x);
        //   }
        // }()
    
        //方法四 arguments.callee指向匿名函数自身,此方法系统消耗最小
        // (doc.onclick = function() {
        //   console.log(arguments.callee.x);
        // }).x = i;
    
        //方法五
        // doc.dataset.value = i;
        // doc.onclick = function(){
        //   console.log(this.dataset.value);
        // };
        document.body.appendChild(doc);
    }
  • 相关阅读:
    博客园的商业模式
    读书单
    VC++学习笔记
    技术话题
    vc+学习遇到的问题
    常见的Java问题排查方法
    MSDN Library for vs 2010 下载和安装
    WT19i刷机过程
    随记
    WT19i的刷机
  • 原文地址:https://www.cnblogs.com/daysme/p/6555877.html
Copyright © 2011-2022 走看看