看到這個類的定義:上Object.getPrototypeOf把方法(這)
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
是公共的,但可以訪問私有變量(publicMethod
)不能。它也在原型上共享,其中publicPrivilegedMethodOnInstance
不是。
定義publicPrivilegedMethodOnPrototype
這樣的任何缺點?我猜ECMAScript 5是一個需求,並且每次MyClass被實例化時該方法都會被重新定義。
由於**關閉**,publicPrivilegedMethodOnPrototype可以訪問私有變量。 –
@ibrahimmahrir是的,這就是主意。 'publicMethod'不能做到這一點,因爲它在MyClass函數定義之外。 –