• JS的面向对象编程


    1.1   对象

      顾名思义,面向对象编程与对象有关。到目前为止,我们一直将对象当做值的无规律组合,在认为合适的时候添加和改变对象的属性。在面向对象的方法中,每个对象都是一个包含自身的小世界,外界只能通过有限明确的接口来接触对象,这些接口由一些具体的方法和属性组成。

    之前见到的Date和Error对象的工作原理就是这样。它们用New关键字创建对象的方法,并提供多种方法和属性为其余的接口,而不是提供正规函数来使用这些对象。

    1.1.1  定义方法

    为对象添加方法的一种方式就是简单的附加一个函数值,如下面的代码所示。

    var rabbit={};
    rabbit.speak=function(line){
      print("The rabbit say  '"+line+"'");      
    };
    
    rabbit.speak("I am alive");

    在大多数情况下,方法也需要明确调用自己的对象。例如,如果有多只兔子,speak方法要指出哪只兔子在说话。可以通过一个特殊的变量this来达到这个目的。当将函数作为方法调用(查找属性,然后立即调用,比如object.method() )时,this将指向相关的对象。

    function speak(line) {
        print("The ", this.adjective, " rabbit say '", line, "'");
    };
    
    whiteRabbit = { adjective: "white", speak: speak };
    fatRabbit = { adjective: "fat", speak: speak };
    
    whiteRabbit.speak("Oh my ears and whiskers,how late it is getting!");
    fatRabbit.speak("I could sure user a carrot right now.");

    上面的代码使用this变量将正在说话的兔子的类型插入输出文本中。其将输出一下类容:

    The white rabbit say Oh my ears and whiskers,how late it is getting!

    The fat rabbit say I could sure user a carrot right now.

    现在可以弄清apply方法的第一个神秘参数了,该参数指向调用该方法的对象,也可以通过以下方式让rabbit调用speak方法:

    speak.apply(fatRabbit,["Yum."]);

    函数也有一个与apply类似的call方法,但是可以为函数分别给出相应的参数,而无需将其作为一个数组。

    speak.call(fatRabbit,"Burp.");

    对于多个参数,可以按如下方式使用call和apply:

    function run(from, to) {
        print("The ", this.adjective, "rabbit runs from ", from, " to ", to, ".");
    };
    
    run.apply(whiteRabbit, ["A", "B"]);
    run.call(fatRabbit, "A", "B");

       1.1.2  构造函数

        new 关键字提供了一种简便的新对象创建方式。如果调用函数时在前面加new修饰符,其this变量将指向一个新对象,该对象会自动返回(除非使用return语句返回特定值)。以这种方式创建对象的函数称为构造函数。以下是创建兔子对象的构造函数。

  • 相关阅读:
    对拍
    浅谈trie树
    蒟蒻的二分模板
    浅谈线性素数筛
    浅谈树状数组
    HDU 2181 哈密顿绕行世界问题
    HDU 3567 Eight II
    HDU 1043 Eight
    POJ 3076 Sudoku
    hihoCoder 1087 Hamiltonian Cycle
  • 原文地址:https://www.cnblogs.com/manyiString/p/3083432.html
Copyright © 2020-2023  润新知