将方法放在 Object.getPrototypeOf(this) 上

Putting methods on Object.getPrototypeOf(this)

看到这个class定义:

function MyClass (property) {
    // Private
    var privateVariable;
    var privateMethod = function () {};

    // Public
    this.publicProperty = property;
    this.publicPrivilegedMethodOnInstance = function () {};
    Object.getPrototypeOf(this).publicPrivilegedMethodOnPrototype = function () {};
}
MyClass.prototype.publicMethod = function () {};

var myMyClass = new MyClass('foo');

方法 publicPrivilegedMethodOnPrototype 是 public,但可以访问私有变量(publicMethod)不能。它也在原型上共享,publicPrivilegedMethodOnInstance 不是。

这样定义 publicPrivilegedMethodOnPrototype 有什么缺点吗?我想 ECMAScript 5 是一项要求,并且每次实例化 MyClass 时都会重新定义该方法。

这是一个非常糟糕的主意。

所以您创建了许多对象,但是当您将 属性 分配给所有对象的原型时,在某些时候,即使是不打算访问某些值的函数也会这样做...... 这很奇怪

给定的原型函数旨在使用 this:

从拥有原型的对象访问属性
function X() {
   this.text = "hello world";
}
X.prototype.doStuff() {
   console.log(this.text);
};

因此,避免anti-pattern。这没有道理。我的建议是您需要处理 JavaScript 中缺少访问修饰符的问题,而不是盲目地寻找解决方法。