必须知道的10个js函数的this指向小技巧

this指向总结

对象(包括json)中的this指向对象实例

定义函数中this,this指向window。如果是调用函数,指向函数实例

for循环中,this指向最后一个循环值

异步操作中,this指向最终值

setTimeout时,function(){}要用_this,不能直接使用this,因为this指向函数本身

() => {}本身并没有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.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居然可以如此灵活应用

this指向总结

对象(包括json)中的this指向对象实例

定义函数中this,this指向window。如果是调用函数,指向函数实例

for循环中,this指向最后一个循环值

异步操作中,this指向最终值

setTimeout时,function(){}要用_this,不能直接使用this,因为this指向函数本身

() => {}本身并没有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防抖与节流技巧助你成为开发高手"

节流(Throttle)
节流的基本思想是保证在一定时间内只触发一次函数。与防抖不同的是,节流不管事件触发多频繁,都会保证在一段时间内至少执行一次函数。
使用场景:滚动事件中的加载更多、拖拽场景等。

防抖(Debounce)
防抖的基本思想是设置一个等待时间,在这个等待时间内,事件可以被连续触发,但函数只会在最后一次触发后的等待时间结束时执行一次。如果在等待时间内再次触发事件,那么会重新计算等待时间。
使用场景:搜索框实时搜索、窗口大小变化后的计算等。

触发机制:
防抖是在事件停止触发 N 秒后执行一次,如果你在一个事件执行的 N 秒内又触发了这个事件,则会重新计算执行时间。
节流是在固定的时间间隔内只执行一次函数,不论事件触发多频繁,都会保证在一段时间内至少执行一次函数。

使用场景:
防抖通常用于输入框的实时搜索、窗口大小变化后的计算等场景,需要等待用户停止输入或窗口大小变化停止后再执行相应的操作。
节流通常用于滚动事件中的加载更多、拖拽场景等,需要保证在一定时间内至少执行一次函数来响应用户的操作。

实现方式:
防抖的实现方式通常是在事件触发时设置一个延迟执行的函数,并清除之前的延迟执行函数。
节流的实现方式通常是在事件触发时判断距离上次执行函数的时间是否达到了指定的时间间隔,如果达到了则执行函数,否则不执行。

"惊喜大解锁!揭示JS防抖与节流技术的神奇妙用"

节流(Throttle)
节流的基本思想是保证在一定时间内只触发一次函数。与防抖不同的是,节流不管事件触发多频繁,都会保证在一段时间内至少执行一次函数。
使用场景:滚动事件中的加载更多、拖拽场景等。

防抖(Debounce)
防抖的基本思想是设置一个等待时间,在这个等待时间内,事件可以被连续触发,但函数只会在最后一次触发后的等待时间结束时执行一次。如果在等待时间内再次触发事件,那么会重新计算等待时间。
使用场景:搜索框实时搜索、窗口大小变化后的计算等。

触发机制:
防抖是在事件停止触发 N 秒后执行一次,如果你在一个事件执行的 N 秒内又触发了这个事件,则会重新计算执行时间。
节流是在固定的时间间隔内只执行一次函数,不论事件触发多频繁,都会保证在一段时间内至少执行一次函数。

实现方式:
防抖的实现方式通常是在事件触发时设置一个延迟执行的函数,并清除之前的延迟执行函数。
节流的实现方式通常是在事件触发时判断距离上次执行函数的时间是否达到了指定的时间间隔,如果达到了则执行函数,否则不执行。

使用场景:
防抖通常用于输入框的实时搜索、窗口大小变化后的计算等场景,需要等待用户停止输入或窗口大小变化停止后再执行相应的操作。
节流通常用于滚动事件中的加载更多、拖拽场景等,需要保证在一定时间内至少执行一次函数来响应用户的操作。

"网页加速利器!掌握JS防抖和节流技术,提升用户体验"

节流(Throttle)
节流的基本思想是保证在一定时间内只触发一次函数。与防抖不同的是,节流不管事件触发多频繁,都会保证在一段时间内至少执行一次函数。
使用场景:滚动事件中的加载更多、拖拽场景等。

防抖(Debounce)
防抖的基本思想是设置一个等待时间,在这个等待时间内,事件可以被连续触发,但函数只会在最后一次触发后的等待时间结束时执行一次。如果在等待时间内再次触发事件,那么会重新计算等待时间。
使用场景:搜索框实时搜索、窗口大小变化后的计算等。

使用场景:
防抖通常用于输入框的实时搜索、窗口大小变化后的计算等场景,需要等待用户停止输入或窗口大小变化停止后再执行相应的操作。
节流通常用于滚动事件中的加载更多、拖拽场景等,需要保证在一定时间内至少执行一次函数来响应用户的操作。

触发机制:
防抖是在事件停止触发 N 秒后执行一次,如果你在一个事件执行的 N 秒内又触发了这个事件,则会重新计算执行时间。
节流是在固定的时间间隔内只执行一次函数,不论事件触发多频繁,都会保证在一段时间内至少执行一次函数。

实现方式:
防抖的实现方式通常是在事件触发时设置一个延迟执行的函数,并清除之前的延迟执行函数。
节流的实现方式通常是在事件触发时判断距离上次执行函数的时间是否达到了指定的时间间隔,如果达到了则执行函数,否则不执行。

"抗压必备!10个JS防抖与节流技巧,助你应对突发流量"

节流(Throttle)
节流的基本思想是保证在一定时间内只触发一次函数。与防抖不同的是,节流不管事件触发多频繁,都会保证在一段时间内至少执行一次函数。
使用场景:滚动事件中的加载更多、拖拽场景等。

防抖(Debounce)
防抖的基本思想是设置一个等待时间,在这个等待时间内,事件可以被连续触发,但函数只会在最后一次触发后的等待时间结束时执行一次。如果在等待时间内再次触发事件,那么会重新计算等待时间。
使用场景:搜索框实时搜索、窗口大小变化后的计算等。

使用场景:
防抖通常用于输入框的实时搜索、窗口大小变化后的计算等场景,需要等待用户停止输入或窗口大小变化停止后再执行相应的操作。
节流通常用于滚动事件中的加载更多、拖拽场景等,需要保证在一定时间内至少执行一次函数来响应用户的操作。

实现方式:
防抖的实现方式通常是在事件触发时设置一个延迟执行的函数,并清除之前的延迟执行函数。
节流的实现方式通常是在事件触发时判断距离上次执行函数的时间是否达到了指定的时间间隔,如果达到了则执行函数,否则不执行。

触发机制:
防抖是在事件停止触发 N 秒后执行一次,如果你在一个事件执行的 N 秒内又触发了这个事件,则会重新计算执行时间。
节流是在固定的时间间隔内只执行一次函数,不论事件触发多频繁,都会保证在一段时间内至少执行一次函数。

js的防抖、节流

节流(Throttle)
节流的基本思想是保证在一定时间内只触发一次函数。与防抖不同的是,节流不管事件触发多频繁,都会保证在一段时间内至少执行一次函数。
使用场景:滚动事件中的加载更多、拖拽场景等。

防抖(Debounce)
防抖的基本思想是设置一个等待时间,在这个等待时间内,事件可以被连续触发,但函数只会在最后一次触发后的等待时间结束时执行一次。如果在等待时间内再次触发事件,那么会重新计算等待时间。
使用场景:搜索框实时搜索、窗口大小变化后的计算等。

实现方式:
防抖的实现方式通常是在事件触发时设置一个延迟执行的函数,并清除之前的延迟执行函数。
节流的实现方式通常是在事件触发时判断距离上次执行函数的时间是否达到了指定的时间间隔,如果达到了则执行函数,否则不执行。

触发机制:
防抖是在事件停止触发 N 秒后执行一次,如果你在一个事件执行的 N 秒内又触发了这个事件,则会重新计算执行时间。
节流是在固定的时间间隔内只执行一次函数,不论事件触发多频繁,都会保证在一段时间内至少执行一次函数。

使用场景:
防抖通常用于输入框的实时搜索、窗口大小变化后的计算等场景,需要等待用户停止输入或窗口大小变化停止后再执行相应的操作。
节流通常用于滚动事件中的加载更多、拖拽场景等,需要保证在一定时间内至少执行一次函数来响应用户的操作。

真的有10种神奇的js防抖技巧和节流方法,你绝对不能错过!

节流(Throttle)
节流的基本思想是保证在一定时间内只触发一次函数。与防抖不同的是,节流不管事件触发多频繁,都会保证在一段时间内至少执行一次函数。
使用场景:滚动事件中的加载更多、拖拽场景等。

防抖(Debounce)
防抖的基本思想是设置一个等待时间,在这个等待时间内,事件可以被连续触发,但函数只会在最后一次触发后的等待时间结束时执行一次。如果在等待时间内再次触发事件,那么会重新计算等待时间。
使用场景:搜索框实时搜索、窗口大小变化后的计算等。

实现方式:
防抖的实现方式通常是在事件触发时设置一个延迟执行的函数,并清除之前的延迟执行函数。
节流的实现方式通常是在事件触发时判断距离上次执行函数的时间是否达到了指定的时间间隔,如果达到了则执行函数,否则不执行。

使用场景:
防抖通常用于输入框的实时搜索、窗口大小变化后的计算等场景,需要等待用户停止输入或窗口大小变化停止后再执行相应的操作。
节流通常用于滚动事件中的加载更多、拖拽场景等,需要保证在一定时间内至少执行一次函数来响应用户的操作。

触发机制:
防抖是在事件停止触发 N 秒后执行一次,如果你在一个事件执行的 N 秒内又触发了这个事件,则会重新计算执行时间。
节流是在固定的时间间隔内只执行一次函数,不论事件触发多频繁,都会保证在一段时间内至少执行一次函数。

任务攻城略地:揭秘宏任务与微任务的深度对决

javaScript是单线程语言(如果多线程dom会疯掉)
所以在同一时间只能执行一个任务,称为主线程,用来执行同步任务
同时还有两个任务列表用于存放异步任务,宏任务、微任务
执行顺序为:主线程=>微任务=>宏任务

宿主环境提供的叫宏任务,不是立即执行

由语言标准提供的叫微任务,立即执行

宿主环境:简单来说就是能使javascript完美运行的环境,只要能完美运行javascript的载体就是javascript的宿主环境。目前我们常见的两种宿主环境有浏览器和node

语言标准:我们都知道JavaScript是一种编程语言,但其实JavaScript由ECMA制定标准,称之为ECMAScript,所以由语言标准提供的就是微任务,比如ES6提供的promise。

宏任务:script(全局任务), setTimeout, setInterval, setImmediate, I/O, UI rendering.

微任务:Promise, process.nextTick, Object.observer, MutationObserver

绝佳线索揭示宏任务与微任务之间的惊人优劣

javaScript是单线程语言(如果多线程dom会疯掉)
所以在同一时间只能执行一个任务,称为主线程,用来执行同步任务
同时还有两个任务列表用于存放异步任务,宏任务、微任务
执行顺序为:主线程=>微任务=>宏任务

宿主环境提供的叫宏任务,不是立即执行

由语言标准提供的叫微任务,立即执行

语言标准:我们都知道JavaScript是一种编程语言,但其实JavaScript由ECMA制定标准,称之为ECMAScript,所以由语言标准提供的就是微任务,比如ES6提供的promise。

宿主环境:简单来说就是能使javascript完美运行的环境,只要能完美运行javascript的载体就是javascript的宿主环境。目前我们常见的两种宿主环境有浏览器和node

微任务:Promise, process.nextTick, Object.observer, MutationObserver

宏任务:script(全局任务), setTimeout, setInterval, setImmediate, I/O, UI rendering.

3637383940 共13562条