您的位置:首页 > Web前端 > JavaScript

使用 this 指针和 prototype 实现 js 的 OO 时的一个区别

2005-03-02 09:54 681 查看
利用 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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐