Javascript 面向对象(共有方法,私有方法,特权方法,静态属性和方法,静态类)示例讲解

一,私有属性和方法

私有方法:私有方法本身是可以访问类内部的所有属性(即私有属性和公有属性),但是私有方法是不可以在类的外部被调用。 

说明:类的构造函数里定义的function,即为私有方法;而在构造函数里用var声明的变量,也相当于是私有变量。(不过类比于c#这类强类型语言中的私有成员概念还是有区别的,比如无法在非构造函数以外的其它方法中调用) 。

私有方法

对象的私有方法和属性,外部是不可以访问的,在方法的内部不是能this调用对象的公有方法、公有属性、特权方法的。

二,公有属性和方法

公有方法:

1.公有方法是可以在类的外部被调用的,

2.但是它不可以访问类的私有属性。

3.公有方法必须在类的内部或者外部通过类的prototype属性添加。

/*

    * 公有方法:

  * 1.公有方法是可以在类的外部被调用的;

  * 2.但是它不可以访问类的私有属性;

  * 3.公有方法必须在类的内部或者外部通过类的prototype属性添加。

    */

    //JavaScript对象公有属性,公有方法示例

    function JSClass() {

        //公有变量在函数内或者实例都能访问

        this.publicAttribute = "公有属性";

        this.publicMethod_A = function () {

            console.log("公有方法A," + this.publicAttribute);

        };

        //公有方法可以在类的内部添加

        JSClass.prototype.publicMethod_B = function () {

            console.log("公有方法B," + this.publicAttribute);

        };

        //公有方法可以在函数作用域范围内使用,也可以在函索作用域范围外使用,可以被实例调用和继承

        this.publicMethod_A();

        this.publicMethod_B();

        /*

        公有属性和方法有个特点:在内部访问都必须用this访问

        下面几种是不行的:

        publicAttribute;

        publicMethod_A();

        publicMethod_B();

        */

    };

    //公有方法也可以在类的外部通过类的prototype属性添加

    JSClass.prototype.publicMethod_C = function () {

        console.log("公有方法C," + this.publicAttribute);

    };


    /*new一个实例*/

    var instance = new JSClass();

    console.log("实例调用公有属性:" + instance.publicAttribute);

    console.log("实例调用公有方法:" + instance.publicMethod_A());

    console.log("实例调用公有方法:" + instance.publicMethod_B());

    console.dir(instance); //instance实例可以访问公有属性及方法

    //但是,通过实例添加公有属性是不行的

    //instance.prototype.publicMethod_D = function () {

    //    console.log("公有方法D," + this.publicAttribute);

    //};

公有方法的调用规则

调用公有方法,我们必需先实例化对象

公有方法中通过不this调用公有属性和特权方法,不能使用this调用静态方法和属性,必需裁通过对象本身调用,即对象名。公有方法也不能调用私有方法。

三,特权方法

特权方法:

1.特权方法是可以在类的外部被调用的,

2.但是它可以访问类的私有属性,并且也是可以访问类的公有属性,可以勉强的认为它是一种特殊的公有方法。

3.但是它与上面的公有方法的声明与定义方式不同。特权方法必须在类的内部声明定义。

特权方法的调用规则

特权方法通过this调用公有方法、公有属性,通过对象本身调用静态方法和属性,在方法体内直接调用私有属性和私有方法。

公有方法:就是所有通过该类实例化出来的对象,共同都拥有或者说都可以使用的方法。一般把共用的方法,都放在“原型对象“当中,如果放在构造函数中,会重复创建共同的方法。

私有方法:不能在外部调用。

特权方法:利用的闭包原理,即通过作用域链,让内部函数能够访问外部函数的变量对象(即该类的私有变量、私有方法)。

四,静态属性和方法

静态属性和方法: 

无需实例化(即无需用new操作符实化对象)就可以调用的方法就叫静态方法。

静态方法的调用规则

使用静态方法时,无需实例化对象,便可以调用,对象实例不能调用对象的静态方法,只能调用实例自身的静态属性和方法。

五,静态类

静态类: 

无需实例化(即无需用new操作符实化对象)就可以调用的方法就叫静态方法,

只包含静态属性和静态方法的类叫静态类,不能被实例化。

你可能感兴趣的:(Javascript 面向对象(共有方法,私有方法,特权方法,静态属性和方法,静态类)示例讲解)