惊人发现!这10个Js函数的this指向竟然可以改变游戏规则!
this指向总结
定义函数中this,this指向window。如果是调用函数,指向函数实例对象(包括json)中的this指向对象实例
for循环中,this指向最后一个循环值
异步操作中,this指向最终值
() => {}本身并没有this,this为父级代码继承过来的,不同情况下调用同一个函数,this指向不同,不一定指向对象实例本身
setTimeout时,function(){}要用_this,不能直接使用this,因为this指向函数本身
this指向实例
var json1={fn1:function(){
console.log(this); //指向json
},
fn2:function(){
var i=3;
function fn3(){
console.log(this) //指向window
};
return fn3();
}
}
json1.fn1();
json1.fn2();
vue中data、computed、methods的调用
this.age;
this.newOption
this.getData();
this.$parent可以访问父级vue实例(或者组件)
this.$root可以访问根级vue实例(或者组件)
this.$el
this.$data
this.$router 访问当前的路由
call()、apply()、bind()()三者的区别:改变this指向的三种方法
call():第一个参数:this指向,如果要传参,后面依次是参数apply:第一个参数:this指向,第二个参数接受的是一个数组,如果要传参,后面依次放入数组中
bind():只改变this指向,不会调用函数。如果喜爱那个调用还需要加“()”,传参和跟call相似,只不过后面多了个 ()下面进入实体的案列
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.call(obj,1,2);
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.bind(obj,1,2)();
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.apply(obj,[1,2]);
爆炸!揭秘Js函数的this指向10大谜团!
this指向总结
定义函数中this,this指向window。如果是调用函数,指向函数实例对象(包括json)中的this指向对象实例
for循环中,this指向最后一个循环值
异步操作中,this指向最终值
() => {}本身并没有this,this为父级代码继承过来的,不同情况下调用同一个函数,this指向不同,不一定指向对象实例本身
setTimeout时,function(){}要用_this,不能直接使用this,因为this指向函数本身
this指向实例
var json1={fn1:function(){
console.log(this); //指向json
},
fn2:function(){
var i=3;
function fn3(){
console.log(this) //指向window
};
return fn3();
}
}
json1.fn1();
json1.fn2();
vue中data、computed、methods的调用
this.age;
this.newOption
this.getData();
this.$parent可以访问父级vue实例(或者组件)
this.$root可以访问根级vue实例(或者组件)
this.$el
this.$data
this.$router 访问当前的路由
call()、apply()、bind()()三者的区别:改变this指向的三种方法
call():第一个参数:this指向,如果要传参,后面依次是参数apply:第一个参数:this指向,第二个参数接受的是一个数组,如果要传参,后面依次放入数组中
bind():只改变this指向,不会调用函数。如果喜爱那个调用还需要加“()”,传参和跟call相似,只不过后面多了个 ()下面进入实体的案列
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.apply(obj,[1,2]);
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.call(obj,1,2);
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.bind(obj,1,2)();
终极秘籍:掌握Js函数this指向的10个技巧
this指向总结
定义函数中this,this指向window。如果是调用函数,指向函数实例对象(包括json)中的this指向对象实例
for循环中,this指向最后一个循环值
异步操作中,this指向最终值
() => {}本身并没有this,this为父级代码继承过来的,不同情况下调用同一个函数,this指向不同,不一定指向对象实例本身
setTimeout时,function(){}要用_this,不能直接使用this,因为this指向函数本身
this指向实例
var json1={fn1:function(){
console.log(this); //指向json
},
fn2:function(){
var i=3;
function fn3(){
console.log(this) //指向window
};
return fn3();
}
}
json1.fn1();
json1.fn2();
vue中data、computed、methods的调用
this.age;
this.newOption
this.getData();
this.$parent可以访问父级vue实例(或者组件)
this.$root可以访问根级vue实例(或者组件)
this.$el
this.$data
this.$router 访问当前的路由
call()、apply()、bind()()三者的区别:改变this指向的三种方法
call():第一个参数:this指向,如果要传参,后面依次是参数apply:第一个参数:this指向,第二个参数接受的是一个数组,如果要传参,后面依次放入数组中
bind():只改变this指向,不会调用函数。如果喜爱那个调用还需要加“()”,传参和跟call相似,只不过后面多了个 ()下面进入实体的案列
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.apply(obj,[1,2]);
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.bind(obj,1,2)();
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.call(obj,1,2);
这10个Js函数的this指向,隐藏了一个巨大的秘密!
this指向总结
定义函数中this,this指向window。如果是调用函数,指向函数实例对象(包括json)中的this指向对象实例
for循环中,this指向最后一个循环值
异步操作中,this指向最终值
() => {}本身并没有this,this为父级代码继承过来的,不同情况下调用同一个函数,this指向不同,不一定指向对象实例本身
setTimeout时,function(){}要用_this,不能直接使用this,因为this指向函数本身
this指向实例
var json1={fn1:function(){
console.log(this); //指向json
},
fn2:function(){
var i=3;
function fn3(){
console.log(this) //指向window
};
return fn3();
}
}
json1.fn1();
json1.fn2();
vue中data、computed、methods的调用
this.age;
this.newOption
this.getData();
this.$parent可以访问父级vue实例(或者组件)
this.$root可以访问根级vue实例(或者组件)
this.$el
this.$data
this.$router 访问当前的路由
call()、apply()、bind()()三者的区别:改变this指向的三种方法
call():第一个参数:this指向,如果要传参,后面依次是参数apply:第一个参数:this指向,第二个参数接受的是一个数组,如果要传参,后面依次放入数组中
bind():只改变this指向,不会调用函数。如果喜爱那个调用还需要加“()”,传参和跟call相似,只不过后面多了个 ()下面进入实体的案列
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.bind(obj,1,2)();
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.call(obj,1,2);
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.apply(obj,[1,2]);
指向如此神奇:揭示Js函数this的10个惊人事实!
this指向总结
定义函数中this,this指向window。如果是调用函数,指向函数实例对象(包括json)中的this指向对象实例
for循环中,this指向最后一个循环值
异步操作中,this指向最终值
() => {}本身并没有this,this为父级代码继承过来的,不同情况下调用同一个函数,this指向不同,不一定指向对象实例本身
setTimeout时,function(){}要用_this,不能直接使用this,因为this指向函数本身
this指向实例
vue中data、computed、methods的调用this.age;
this.newOption
this.getData();
this.$parent可以访问父级vue实例(或者组件)
this.$root可以访问根级vue实例(或者组件)
this.$el
this.$data
this.$router 访问当前的路由
var json1={
fn1:function(){
console.log(this); //指向json
},
fn2:function(){
var i=3;
function fn3(){
console.log(this) //指向window
};
return fn3();
}
}
json1.fn1();
json1.fn2();
call()、apply()、bind()()三者的区别:改变this指向的三种方法
call():第一个参数:this指向,如果要传参,后面依次是参数apply:第一个参数:this指向,第二个参数接受的是一个数组,如果要传参,后面依次放入数组中
bind():只改变this指向,不会调用函数。如果喜爱那个调用还需要加“()”,传参和跟call相似,只不过后面多了个 ()下面进入实体的案列
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.call(obj,1,2);
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.apply(obj,[1,2]);
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.bind(obj,1,2)();
揭秘js函数的this指向,让你眼前一亮
this指向总结
定义函数中this,this指向window。如果是调用函数,指向函数实例对象(包括json)中的this指向对象实例
for循环中,this指向最后一个循环值
异步操作中,this指向最终值
() => {}本身并没有this,this为父级代码继承过来的,不同情况下调用同一个函数,this指向不同,不一定指向对象实例本身
setTimeout时,function(){}要用_this,不能直接使用this,因为this指向函数本身
this指向实例
vue中data、computed、methods的调用this.age;
this.newOption
this.getData();
this.$parent可以访问父级vue实例(或者组件)
this.$root可以访问根级vue实例(或者组件)
this.$el
this.$data
this.$router 访问当前的路由
var json1={
fn1:function(){
console.log(this); //指向json
},
fn2:function(){
var i=3;
function fn3(){
console.log(this) //指向window
};
return fn3();
}
}
json1.fn1();
json1.fn2();
call()、apply()、bind()()三者的区别:改变this指向的三种方法
call():第一个参数:this指向,如果要传参,后面依次是参数apply:第一个参数:this指向,第二个参数接受的是一个数组,如果要传参,后面依次放入数组中
bind():只改变this指向,不会调用函数。如果喜爱那个调用还需要加“()”,传参和跟call相似,只不过后面多了个 ()下面进入实体的案列
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.call(obj,1,2);
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.bind(obj,1,2)();
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.apply(obj,[1,2]);
这是你不知道的js函数this指向的十个惊人之处!
this指向总结
定义函数中this,this指向window。如果是调用函数,指向函数实例对象(包括json)中的this指向对象实例
for循环中,this指向最后一个循环值
异步操作中,this指向最终值
() => {}本身并没有this,this为父级代码继承过来的,不同情况下调用同一个函数,this指向不同,不一定指向对象实例本身
setTimeout时,function(){}要用_this,不能直接使用this,因为this指向函数本身
this指向实例
vue中data、computed、methods的调用this.age;
this.newOption
this.getData();
this.$parent可以访问父级vue实例(或者组件)
this.$root可以访问根级vue实例(或者组件)
this.$el
this.$data
this.$router 访问当前的路由
var json1={
fn1:function(){
console.log(this); //指向json
},
fn2:function(){
var i=3;
function fn3(){
console.log(this) //指向window
};
return fn3();
}
}
json1.fn1();
json1.fn2();
call()、apply()、bind()()三者的区别:改变this指向的三种方法
call():第一个参数:this指向,如果要传参,后面依次是参数apply:第一个参数:this指向,第二个参数接受的是一个数组,如果要传参,后面依次放入数组中
bind():只改变this指向,不会调用函数。如果喜爱那个调用还需要加“()”,传参和跟call相似,只不过后面多了个 ()下面进入实体的案列
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.bind(obj,1,2)();
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.call(obj,1,2);
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.apply(obj,[1,2]);
绝对不能错过!掌握js函数的this指向的八大技巧
this指向总结
定义函数中this,this指向window。如果是调用函数,指向函数实例对象(包括json)中的this指向对象实例
for循环中,this指向最后一个循环值
异步操作中,this指向最终值
() => {}本身并没有this,this为父级代码继承过来的,不同情况下调用同一个函数,this指向不同,不一定指向对象实例本身
setTimeout时,function(){}要用_this,不能直接使用this,因为this指向函数本身
this指向实例
vue中data、computed、methods的调用this.age;
this.newOption
this.getData();
this.$parent可以访问父级vue实例(或者组件)
this.$root可以访问根级vue实例(或者组件)
this.$el
this.$data
this.$router 访问当前的路由
var json1={
fn1:function(){
console.log(this); //指向json
},
fn2:function(){
var i=3;
function fn3(){
console.log(this) //指向window
};
return fn3();
}
}
json1.fn1();
json1.fn2();
call()、apply()、bind()()三者的区别:改变this指向的三种方法
call():第一个参数:this指向,如果要传参,后面依次是参数apply:第一个参数:this指向,第二个参数接受的是一个数组,如果要传参,后面依次放入数组中
bind():只改变this指向,不会调用函数。如果喜爱那个调用还需要加“()”,传参和跟call相似,只不过后面多了个 ()下面进入实体的案列
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.bind(obj,1,2)();
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.apply(obj,[1,2]);
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.call(obj,1,2);
js函数this指向全解析:后面还有五个更震撼的发现!
this指向总结
定义函数中this,this指向window。如果是调用函数,指向函数实例对象(包括json)中的this指向对象实例
for循环中,this指向最后一个循环值
异步操作中,this指向最终值
setTimeout时,function(){}要用_this,不能直接使用this,因为this指向函数本身
() => {}本身并没有this,this为父级代码继承过来的,不同情况下调用同一个函数,this指向不同,不一定指向对象实例本身
this指向实例
var json1={fn1:function(){
console.log(this); //指向json
},
fn2:function(){
var i=3;
function fn3(){
console.log(this) //指向window
};
return fn3();
}
}
json1.fn1();
json1.fn2();
vue中data、computed、methods的调用
this.age;
this.newOption
this.getData();
this.$parent可以访问父级vue实例(或者组件)
this.$root可以访问根级vue实例(或者组件)
this.$el
this.$data
this.$router 访问当前的路由
call()、apply()、bind()()三者的区别:改变this指向的三种方法
call():第一个参数:this指向,如果要传参,后面依次是参数apply:第一个参数:this指向,第二个参数接受的是一个数组,如果要传参,后面依次放入数组中
bind():只改变this指向,不会调用函数。如果喜爱那个调用还需要加“()”,传参和跟call相似,只不过后面多了个 ()下面进入实体的案列
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.call(obj,1,2);
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.apply(obj,[1,2]);
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.bind(obj,1,2)();
想彻底搞懂js函数的this指向?这十个实例将助你一臂之力!
this指向总结
定义函数中this,this指向window。如果是调用函数,指向函数实例对象(包括json)中的this指向对象实例
for循环中,this指向最后一个循环值
异步操作中,this指向最终值
setTimeout时,function(){}要用_this,不能直接使用this,因为this指向函数本身
() => {}本身并没有this,this为父级代码继承过来的,不同情况下调用同一个函数,this指向不同,不一定指向对象实例本身
this指向实例
var json1={fn1:function(){
console.log(this); //指向json
},
fn2:function(){
var i=3;
function fn3(){
console.log(this) //指向window
};
return fn3();
}
}
json1.fn1();
json1.fn2();
vue中data、computed、methods的调用
this.age;
this.newOption
this.getData();
this.$parent可以访问父级vue实例(或者组件)
this.$root可以访问根级vue实例(或者组件)
this.$el
this.$data
this.$router 访问当前的路由
call()、apply()、bind()()三者的区别:改变this指向的三种方法
call():第一个参数:this指向,如果要传参,后面依次是参数apply:第一个参数:this指向,第二个参数接受的是一个数组,如果要传参,后面依次放入数组中
bind():只改变this指向,不会调用函数。如果喜爱那个调用还需要加“()”,传参和跟call相似,只不过后面多了个 ()下面进入实体的案列
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.apply(obj,[1,2]);
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.call(obj,1,2);
function fn(x,y){
console.log(this);
}
var obj = {
name:“zs“
}
fn(1,2);
fn.bind(obj,1,2)();