zoukankan      html  css  js  c++  java
  • JavaScript基础 面向对象

    参考:http://bbs.51js.com/thread-74195-1-1.html

    构造器

    构造器代码必须放在整个类定义的最后,这样做是为了保证在它当中被调用的方法都已经被定义了。

    私有实例成员[变量和方法]

    私有实例成员在 JavaScript 中实际上可以用函数内的局部变量来实现,它相当于类的私有实例成员

    他们只能在该类的对象内部被使用,在对象外无法使用。

    创建私有方法有两种方式,一种是直接在类中定义方法,另一种是先定义一个局部变量(私有实例字段),然后定义一个匿名方法赋值给它。

    公有实例成员:两种方法,prototype 和this定义

    1、prototype 方式只应该在类外定义。this 方式只能在类中定义。

    2、prototype 方式如果在类中定义时,则存取私有实例成员时,总是存取最后一个对象实例中的私有实例成员。

    3、prototype 方式定义的公有实例成员是创建在类的原型之上的成员。this 方式定义的公有实例成员,是直接创建在类的实例对象上的成员。

    基于前两点区别,我们可以得到这样的结论:如果要在公有实例方法中存取私有实例成员,那么必须用 this 方式定义。

    关于第三点区别,我们后面在讨论继承时再对它进行更深入的剖析。这里只要知道有这个区别就可以了。

    不要把通过 prototype 方式创建的公有实例方法定义在类的内部!

    公有静态成员

    定义的方式就是给 className.memberName 直接赋值。

    一定不要将公有静态成员定义在它所在的类的内部

    静态类

    myClass = new function() {...}

    继承:一种是原型继承法,一种是调用继承法

    [原型继承法]

    子类继承来的公有实例方法中,如果调用了私有实例字段或者私有实例方法,则所调用的这些私有实例成员是属于父类的。

    子类中定义的实例方法,如果调用了私有实例字段或者私有实例方法,则所调用的这些私有实例成员是属于子类的。

    定义在父类原型上的方法,会被子类继承。

    子类中定义的实例方法是不能访问父类中定义的私有实例成员的。

    静态成员是不会被继承的。

    [调用继承法]

    定义在父类原型上的方法,不会被子类继承。

    子类中定义的实例方法同样不能访问父类中定义的私有实例成员的。

    静态成员同样不会被继承的。

    是通过调用继承法,可以实现多继承。也就是说,一个子类可以从多个父类中继承通过 this 方式定义在父类内部的所有公有实例成员。

    function subClass() {

    // inherit

    parentClass.call(this);

    方法重载示例

    function parentClass() {

    this.method = function() {

    alert("parentClass method");

    }

    }

    function subClass() {

    var method = this.method;

    this.method = function() {

    method.call(this);

    alert("subClass method");

    }

    }

    subClass.prototype = new parentClass();

    subClass.prototype.constructor = subClass;

    var o = new subClass();

    o.method();

  • 相关阅读:
    S4全球总决赛(2)南邮NOJ2059
    S4全球总决赛(2)南邮NOJ2059
    S4全球总决赛(1) 南邮NOJ
    S4全球总决赛(1) 南邮NOJ
    S4全球总决赛(1) 南邮NOJ
    【Linux】鸟哥的Linux私房菜基础学习篇整理(五)
    【Linux】鸟哥的Linux私房菜基础学习篇整理(四)
    【HDOJ】2428 Stars
    【Linux】鸟哥的Linux私房菜基础学习篇整理(三)
    【Linux】鸟哥的Linux私房菜基础学习篇整理(二)
  • 原文地址:https://www.cnblogs.com/2018/p/1838809.html
Copyright © 2011-2022 走看看