公有、私有、静态属性和方法的区别2018-07-10

2018-07-10  本文已影响0人  考拉狸猫

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

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

function js() {

    var privateAttribute="私有属性";

    function privateMethod_A() {

        console.log("私有方法A,可以获取私有属性"+privateAttribute);

    }

    var privateMethod_B=function () {

        console.log("私有方法B,可以获取私有属性"+privateAttribute);

    }

    //私有方法可以在函数作用域范围内使用

    privateMethod_A();

    privateMethod_B();

    // 私有属性和方法还有个特点:都不能用this访问

    // this.privateAttribute;

    // this.privateMethod_A();

}

var instance=new js();

console.log(instance);//instance实例访问不到私有属性及私有方法

/*

* 公有方法

* 公有方法是可以在类外部调用的

*但是不能访问类的私有属性

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

* 特点:可以用this.new.prototype访问

* */

function gy() {

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

    this.pubicAtrribute="公有属性";

    this.publicMethod_A=function () {

        console.log('公有方法A,'+this.pubicAtrribute);

    }

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

    gy.prototype.pubicMethod_B=function () {

        console.log('公有方法B'+this.pubicAtrribute);

    }

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

    this.publicMethod_A();

    this.pubicMethod_B();

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

    // publicMethod_A();错误

}

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

    gy.prototype.pubicMethod_C=function () {

        console.log('公有方法C'+this.pubicAtrribute);

    }

/*new一个实例*/

    var g=new gy();

    console.log(g.pubicAtrribute);

    console.log(g.publicMethod_A);

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

上一篇下一篇

猜你喜欢

热点阅读