创建真正私有方法的缺点

在 Javascript 中创建私有方法的一个缺点是内存效率低,因为每次创建新实例时都会创建私有方法的副本。看这个简单的例子。

function contact(first, last) {
    this.firstName = first;
    this.lastName = last;
    this.mobile;

    // private method
    var formatPhoneNumber = function(number) {
        // format phone number based on input
    };

    // public method
    this.setMobileNumber = function(number) {
        this.mobile = formatPhoneNumber(number);
    };
}

当你创建几个实例时,它们都有 formatPhoneNumber 方法的副本

var rob = new contact('Rob', 'Sanderson');
var don = new contact('Donald', 'Trump');
var andy = new contact('Andy', 'Whitehall');

因此,只有在必要时才能避免使用私有方法。