• JavaScript


    prototype:

    其实对象直接通过 【object.属性/方法】  来定义方法和属性也是可以的,但是会变成静态属性和静态方法,也就是调用的时候也是通过“.”来调用的。
    但如果通过prototype来定义,那么是不行的,必须先实例化属性才可以调用
    另外也不一定必须用prototype来定义实例方法和实例属性,可以在函数体中

    var aa = function()
    {
        //使用【this.属性/方法】来定义。    
    }


    call

    1、【方法.call(另一个方法,参数1,参数2,参数3…)】
    这种就是单纯的替换和传递参数的作用

    var add = function(a,b)
    {
        alert("我是add");
        alert(a + b);
    }
    
    var sub = function(a,b)
    {
        alert("我是sub");
        alert(a -  b);
    }
    
    add.call(sub,3,1); //这个例子的意思是将add替换sub,所以结果是4

    2、【object.call】直接通过对象进行call操作是继承的意思

    【Animal.call(this,name);】说明Animal代替了所有的Cat,也就是说Cat对象目前可以调用Animal中所有的对象和属性,谁叫他被代替了

    var Animal = function(name)
    {
        this.name  = name;
        this.showName = function()
        {
            alert(this.name);
        }
    }
    
    var Cat = function(name)
    { 
        alert("123");
        Animal.call(this,name);    
    }
    
    var cat = new Cat("cat"); //对象创建时,自动执行函数内的代码块
    
    cat.showName();

    前者代替/传承后者,后者继承前者。然后执行操作前者的函数

    【object.方法.call(另一个对象,参数1,参数2,参数3…)】
    call的作用是将【object.方法】在【另一个对象】的【函数体】中执行,并且传入参数。有点继承和委托

    var Cat = function()
    {
        this.name  = "cat";
    }
    
    var animal = new Animal();
    var cat = new Cat();
    
    animal.showName.call(cat,"HelloWorld");




  • 相关阅读:
    getAttribute()方法
    getElementsByTagName()方法
    DOM方法 getElementsByName()方法
    python 与
    run_debug和run_demo的区别
    sh脚本写法
    使用snapshot继续训练网络
    安卓获取数据demo出现的问题
    查看文件大小
    重命名文件夹名字
  • 原文地址:https://www.cnblogs.com/CyLee/p/5324623.html
Copyright © 2020-2023  润新知