zoukankan      html  css  js  c++  java
  • 使用 this 指针和 prototype 实现 js 的 OO 时的一个区别

    利用 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();
  • 相关阅读:
    EEPROM芯片AT2402驱动
    FPGA 状态机(FSM)的三段式推荐写法
    1602液晶驱动
    Bresenham快速画直线算法
    I2C总线驱动程序
    从数据库中取时间类型显示
    C# 页面关联类似模式窗口
    C# 页面javascript 页面跳转刷新
    网页有趣的时间显示控件
    DataSet
  • 原文地址:https://www.cnblogs.com/RChen/p/111230.html
Copyright © 2011-2022 走看看