将call/apply方法应用于其他对象上的几种方法

摘要:在处理类数组中,发现了两种将数组方法应用于类数组的方法,现将call/apply的常用方式总结一下。当做函数调用;作为对象的方法,给第三方使用;作为原型的方法,给第三方使用

在处理类数组中,发现了两种将数组方法应用于类数组的方法,现将call/apply的常用方式总结一下。


一、当做函数调用

function print_vars(var1,var2){
            console.log( var1 );
            console.log( var2 );
            console.log( this.name );
            console.log( this.age );
        }
        var o = {
            name:'tester',
            age:16
        };
        print_vars.call( o,1,2);


二、作为对象的方法,给第三方使用

var arr = {
            "0":1,
            "1":2,
            "2":3,
            length:3
        };
        //用数组实例的every方法应用在arr上
        var rst = [].every.call(arr,function(v,i,a){
            return v>0;
        });
        console.log( rst );

此处,用一个[]数组实例,来引用它的every方法的call方法;


三、作为原型的方法,给第三方使用

var arr = {
            "0":1,
            "1":2,
            "2":3,
            length:3
        };
        var rst = Array.prototype.every.call( arr,function(v,i,a){
            return v>0;
        } );
        console.log( "rst:"+rst );

此处,用Array的原型对象中的every方法的call方法来实现。apply的用法与call类似,只不过以数组形式传递新参而已。


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_6263