zoukankan      html  css  js  c++  java
  • 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);
    
                }
  • 相关阅读:
    js正则
    常用正则表达式
    JS
    Vue
    JS
    Cookie、Session和自定义分页
    ORM分组操作示例(与SQL语句的比较)以及基于对象和queryset的正反查询
    跨站请求伪造和csrf_token使用
    ORM之单表、多表操作
    Django中ORM介绍和字段及字段参数
  • 原文地址:https://www.cnblogs.com/y8932809/p/5386803.html
Copyright © 2011-2022 走看看