Javascript 的面向对象编程——类及变量的定义部分

本文通过JavaScript模拟面向对象编程,展示了如何定义私有和公共变量、函数,并解释了var与this的不同作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先声明js是脚本性语言,非面向对象语言。我这里所做的是尝试用js将面向对象中的各种特性模拟出来。

 

  1//定义类
  2
  3var Test=function()
  4
  5ExpandedBlockStart.gifContractedBlock.gif{
  6
  7     //定义私有变量
  8
  9     //这里的私有变量是指Test内部的变量
 10
 11     var priParam="Private";
 12
 13     //定义共有变量,外界及Test内部函数也可访问到
 14
 15     //这里的this指向Test
 16
 17     this.pubParam="Public";
 18
 19     
 20
 21     //定义私有函数
 22
 23     var priFun=function()
 24
 25ExpandedSubBlockStart.gifContractedSubBlock.gif     {
 26
 27          //这里可以访问私有变量
 28
 29          alert(priParam);
 30
 31          //这里的var变量,其作用域为priFun内,外部无法访问
 32
 33          var theParam1="theParam1";
 34
 35          alert(theParam1);
 36
 37          //这里定义this指向Test,定义this. pubParam2,其实作用就是定义了Test. pubParam2
 38
 39          //但是却访问不到pubParam,借用面向对象的说法因为pubParam不是静态变量,必须Test实例化后才可以访问
 40
 41          this. pubParam2="pubParam2";
 42
 43          alert(pubParam2);
 44
 45          alert(this.pubParam2);
 46
 47          //这里会报错
 48
 49          //alert(this.pubParam);
 50     }

 51
 52
 53
 54     //定义公有函数
 55
 56     this.pubFun=function()
 57
 58ExpandedSubBlockStart.gifContractedSubBlock.gif     {
 59
 60          //可以访问定义的私有函数
 61
 62          priFun();
 63
 64          //可以访问私有变量
 65
 66          alert(priParam);
 67
 68          //可以访问公有变量
 69
 70          alert(this.pubParam);
 71
 72     }

 73
 74
 75
 76     //定义初始化函数
 77
 78     this.Create=function()
 79
 80ExpandedSubBlockStart.gifContractedSubBlock.gif     {
 81
 82          priParam="Private Param";
 83
 84          this.pubParam="Public Param";
 85
 86     }

 87
 88     this.Create();
 89
 90}

 91
 92
 93
 94//定义并实例化一个类实例
 95
 96//这里实际调用了Test.Create();
 97
 98var test=new Test();
 99
100//Test中用this定义的变量,实例化后可以被访问,但是没办法访问priParam
101
102alert(test.pubParam);
103
104alert(test.priParam);     //会提示为undefined
105
106//可以调用pubFun();但无法调用priFun();
107
108test.pubFun();
109
110//test.priFun();     //这里会报错
111

 

 

看了上面的代码后,有心人就会发现在变量定义中var 和 this 的作用非常不一样,我们现在是知其然,那么其所以然是如何的呢?

先吃饭,回头说

转载于:https://www.cnblogs.com/7in10/archive/2008/07/23/1249442.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值