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()){}  //这种默认是带着闭包的
posted @ 2020-09-01 17:17  hanfe1  阅读(121)  评论(0编辑  收藏  举报