利用 this 实现的公共方法中可以访问类的私有成员(用 var 声明的变量),私有方法(用 function 直接定义的方法); 利用原型扩展实现的方法中,无法调用私有成员和变量。 例子如下所示(把其中注释掉的两行恢复就可以看到区别): function T(name) { this.Name = name; var x = 5; function privateFunc() { alert('in private method: do sometheing'); } this.PublicFunc = function() { // 可以调用私有方法,访问私有成员变量。 privateFunc(); alert('x = ' + x); alert('in public method: do something else.'); } } //var t = new T('t1'); //t.PublicFunc(); T.prototype.PublicFunc2 = function() { alert('in public method 2.'); // 下面两行都会出错。在利用 prototype 扩展的方法里无法调用对象的私有方法,也访问不到通过 var 定义的私有成员。 // alert(x); // privateFunc(); } var t2 = new T('t2'); t2.PublicFunc(); t2.PublicFunc2(); 相关文章: 2022-12-23 2022-12-23 2022-12-23 2022-01-20 2022-01-10 2021-10-18 2021-12-04