zoukankan      html  css  js  c++  java
  • js补充:jquery对象转dom,this,闭包

    juqery对象转成dom对象:

    	<form id="form">
    		
    	</form>
    
    
    js代码:
    #jquery 
    $("#form")[0].reset()  等于  document.getElementById("form").reset()
    #重置表单
    

    this:

    var name = "全栈28期"
    
    function func(){
    	var name = "全栈25期"
    	console.log(name)   // 全栈25
    }
    
    func();
    
    var name = "全栈28期"
    
    function func(){
    	var name = "全栈25期"
    	console.log(this.name) // 全栈28期
    }
    
    window.func();
    
    var name = "王洋"
    info = {
    	name:"陈硕",
    	func:function(){
    		console.log(this.name) // 陈硕
    	}
    }
    info.func()
    
    var name = "王洋"
    info = {
    	name:"陈硕",
    	func:function(){
    		console.log(this.name)  // info.name > 陈硕
    		function test(){
    			console.log(this.name); // window.name > 王洋
    		}
    		test()
    	}
    }
    info.func()
    
    var name = "王洋"
    info = {
    	name:"陈硕",
    	func:function(){
    		var that = this;
    		function test(){
    			console.log(that.name); // info.name -> 陈硕
    		}
    		test()
    	}
    }
    info.func()
    

    总结:每个函数都是一个作用域,在他的内部都会存在this,谁调用的函数,函数里面this就是谁。

    闭包:

    data_list = [11,22,33]
    for(var i=0;i++;i<data.length){
    	console.log(i,data[i] )
    }
    
    data_list = [11,22,33]
    for(var i=0;i++;i<data.length){
    	// 循环会发送三次ajax请求,由于ajax是异步请求,所以在发送请求时候不会等待。
    	$.ajax({
    		url:"....",
    		data:{value:data_list[i]},
    		success:function(res){
    			// 1分钟之后执行回调函数
    		}
    	})
    }
    console.log("全栈28期")#立即执行,然后去执行ajax中的回调函数
    
    data_list = [11,22,33]
    for(var i=0;i++;i<data.length){
    	// 循环会发送三次ajax请求,由于ajax是异步请求,所以在发送请求时候不会等待。
    	$.ajax({
    		url:"....",
    		data:{value:data_list[i]},
    		success:function(res){
    			// 1分钟之后执行回调函数
    			console.log(i); // 输出:2 2 2 
    		}
    	})
    }
    console.log(i) // 输出:2,取最后的一次值i是2
    
        data_list = [11, 22, 33];
        for (var i = 0; i++; i < data.length) {
    
            function xx(data) {
                $.ajax({
                    url: "....",
                    data: {value: data_list[data]},
                    success: function (res) {
                        // 1分钟之后执行回调函数
                        console.log(data); // 输出:0/1/2
                    }
                })
            }
    
            xx(i)
        }
        console.log(i) // 输出:2
    
        data_list = [11, 22, 33];
        for (var i = 0; i++; i < data.length) {        
            (function(data){
                $.ajax({
                        url: "....",
                        data: {value: data_list[data]},
                        success: function (res) {
                            // 1分钟之后执行回调函数
                            console.log(data); // 输出:0/1/2,这样这里是用的原来的data的值
                        }
                    })
            })(i)
        }
        console.log(i) // 输出:2
    

    注意事项:如果你以后循环,循环内容发送异步请求,异步任务成功之后; 通过闭包来解决。

    $.each(files,function()){}  //这种默认是带着闭包的
    
  • 相关阅读:
    mysql-5.7 show engine innodb status 详解
    mysql-5.7 saving and restore buffer pool state 详解
    mysql-5.7 监控innodb buffer pool load 的进度 详解
    python3 functools partial 用于函数的包装器详解
    mysql-5.7 innodb change buffer 详解
    mysqlbackup 重建带有gtid特性的slave
    将python图片转为二进制文本的实例
    nginx: [error] invalid PID number "" in "/run/nginx.pid"
    ubuntu中执行定时任务crontab
    Matplotlib:mpl_toolkits.mplot3d工具包
  • 原文地址:https://www.cnblogs.com/hanfe1/p/13597300.html
Copyright © 2011-2022 走看看