• Apply和call方法-扩充函数赖以生存的作用域


    在某个特殊对象的作用域中,调用方法。

    例如:

    function Person(name, age, job) {
    
                this.name = name;
    
                this.age = age;
    
                this.job = job;
    
                this.sayName = function () {
    
                    alert(this.name);
    
                }
    
            }
    
            Person("YU", 29, "BB");
    
            window.sayName(); //Yu
    
            var o = new Object();
    
            Person.call(o, "YU", 29, "BB");
    
            o.sayName(); //Yu

    第一个调用,person的属性和方法都被添加给了windows对象了,因为当在全局作用域中调用一个函数时,this总是指向global对象也就是windows对象。

    第二个调用则可以理解为把person函数可以在o的作用域中调用,所以o也就有了所有的属性和方法

    这两个方法都是用来改变作用域的,不同之处是传递参数的不同

    Apply方法第一个参数是this对象,第二个参数是数组

    Call方法第一个参数是this对象,以后的参数是值。

    使用哪种方法,可以根据参数的类型决定。

    Apply
    
    function callsum1(num1,num2){
    
                   return Sum.apply(this,arguments);
    
                }
    
    function callsum1(num1,num2){
    
                    return Sum.apply(this,[2,3]);
    
                }
    
    Call
    
     
    
    function callsum1(num1,num2){
    
                    return Sum.call(this,num1,num2);
    
                }
  • 相关阅读:
    开发模型----快速原型模型
    开发模型--瀑布模型
    python_001
    Linux文件的类型与系统目录
    流程控制语句
    test命令
    排序sort && 取消重复行uniq
    sed命令——用来对文件数据的 选取、替换、删除
    颜色RGB大全
    Markdown的使用
  • 原文地址:https://www.cnblogs.com/y8932809/p/5386803.html
Copyright © 2020-2023  润新知