zoukankan      html  css  js  c++  java
  • js闭包

    //闭包引起的bug
    function bug() {
    var nums = [];
    for (var i = 0; i < 3; i++) {
    nums[i] = function () {
    return i;
    };
    }
    return nums;
    }
    var nums_bug = bug();
    console.log(nums_bug[0]());
    console.log(nums_bug[1]());
    console.log(nums_bug[2]());
    //修复bug
    function fbug() {
    var nums = [];
    for (var i = 0; i < 3; i++) {
    nums[i] = (function (i) {
    return i;
    })(i);
    }
    return nums;
    }
    var nums = fbug();
    console.log(nums);
    //nums[0](); 0
    //nums[1](); 1
    //nums[2](); 2

    //隔离变量作用域
    (function(){
    var name = "zs";
    function a(){
    name = 'sss';
    }
    })();
    (function(){
    var name = "ls";
    function a(){
    name = 'vvv';
    }
    })();

    //计数器
    //普通实现
    var num = 0;
    function countNum(){
    num ++;
    }
    countNum();
    console.log(num);
    //闭包实现
    var counter = (function(){
    var counterPer = 0;
    return function(){
    return counterPer++;
    }
    })();
    console.log(counter());

    var counter=(function(){
    //赋初值
    var count=0;
    //外部调用时形成闭包
    return function(){
    return count++;
    }
    })();
    //声明私有变量

    /*function People(){
    this.name = '张三';
    }
    var p = new People();
    console.log(p.name);*/
    //直接可以.来进行访问,这是公有属性,安全性差
    //私有属性是通过.访问不到的

    var People = (function(){
    var name = '';
    function People(){

    }
    People.prototype = {
    getName : function(){
    return name;
    },
    setName : function(newName){
    name = newName;
    }
    }
    return People;
    })();
    var p = new People();

    //this
    var test = '李四';
    function th_test(){
    console.log(this.test);
    }

    function bth_test(){
    var test = '王五';
    return function(){
    console.log(this.test);
    }
    }
    //this永远指向调用它的对象
  • 相关阅读:
    JMETER(七) 后置处理器
    JMETER(六) 前置处理器
    JMETER(四) 配置元件
    QNET网络测试工具
    修改exe程序图标
    自解压捆绑文件钓鱼
    BigIP Cookie 解码获取真实IP (python2)
    关于windowspwnsafeseh的理解简单随笔
    bilibili动画下载视频批量改名(python)
    好用!网页模板网站
  • 原文地址:https://www.cnblogs.com/staticed/p/8549582.html
Copyright © 2011-2022 走看看