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()){}  //这种默认是带着闭包的
    
  • 相关阅读:
    Android9.0/8.1/6.0 默认给系统 app 授予所有权限
    Git——处理Warning: CocoaPods is installed but broken. Skipping pod install. You appear to have CocoaPods installed but it is not working.
    Git——error: RPC failed; curl 56 LibreSSL SSL_read:报错处理
    Git——To install: sudo gem install cocoapods 报错处理
    Xcode——清除缓存相关文件
    vue —— 拉取远程仓库在本地开发
    vue —— mac中配置Node、NPM环境
    Flutter——常见报错处理
    Git——从githup上克隆下一个完整的项目操作步骤
    Git——rebase实际操作遇到的问题
  • 原文地址:https://www.cnblogs.com/hanfe1/p/13597300.html
Copyright © 2011-2022 走看看