js面向对象之公有方法、私有方法、特权方法

本文将会使用代码为大家讲解 JS 中公有方法、私有方法、特权方法。

1. 静态方法和属性

静态方法即只允许父类调用,其他的实例均无法访问和调用的方法和属性。

var user = function(age){
    // 变量 age 是 user 对象的私有属性
    var age = age;
}

// user.age 是 user 对象的静态方法
user.age = function(){
    return this.age;
}

// 当我们将user对象实例化的时候, zhangsan 无法使用 user对象中的 age 方法
// 实例中没有继承 user 对象的 age  方法
var zhangsan = new user(18);

2. 公共方法

即 依此父类生成的所有实例均可以使用的方法

var user = function(name, age){
    // 公共变量
    this.name = name;
    this.age = age;
}

user.prototype = {
    getInfo: function(){
        return "他的名字叫:" +this.name+ ",他的年龄是:" +this.age;
    }
}

// zhangsan 可以访问到name, age, getInfo
var zhangsan = new user('张三', 18)

3. 私有方法

即只有父类可以访问的方法和属性,他和静态方法一致,只是表现形式不一样,构造器中的 var 变量和参数都是私有方法。

var user = function(age){
    // age 是 user 对象的私有属性
    var age = age;

    // getAge 是 user 对象的私有方法
    function getAge() {
        return age;
    }
}

var zhangsan = new user(18);

// 实例中不包含 user 对象的 age 属性和 getAge 方法
zhangsan.age // undefined
zhangsan.getAge // undefined

4. 特权方法

可以访问私有方法,并且在公共域中可见的方法称为特权方法。特权方法不可被修改,只能替换或者删除。

var user = function(age){
    // age 是 user 对象的私有属性
    var age = age;

    // 创建一个特权方法用来获取 user 对象下的私有属性 age
    this.getInfo = function(){
        return age;
    }
}

var zhangsan = new user(18);
zhangsan.getInfo() == 18

你可能感兴趣的:(js面向对象之公有方法、私有方法、特权方法)