2007-11-26
javascript私有属性和信息隐藏
关键字: javascript私有属性和信息隐藏xml 代码
- 私有属性在构造函数中用var关键字定义,私有属性只能用特权函数公用访问,特权函数是在构造函数中用this关键字定义的函数。私有属性不能使用点记法来访问,只能用公用函数访问。
- 如下是个例子
- function Vehicle() {
- var wheelCount = 4;
- var curbWeightInPounds = 4000;
- this.getWheelCount = function() {
- return wheelCount;
- }
- this.setWheelCount = function(count) {
- wheelCount = count;
- }
- this.getCurbWeightInPounds = function() {
- return curbWeightInPounds;
- }
- this.setCurbWeightInPounds = function(weight) {
- curbWeightInPounds = weight;
- }
- this.refuel = function() {
- return "Refueling Vehicle with regular 87 octane gasoline";
- }
- this.mainTasks = function() {
- return "Driving to work, school, and the grocery store";
- }
- }
- function SportsCar() {
- this.refuel = function() {
- return "Refueling SportsCar with premium 94 octane gasoline";
- }
- this.mainTasks = function() {
- return "Spirited driving, looking good, driving to the beach";
- }
- }
- function CementTruck() {
- this.refuel = function() {
- return "Refueling CementTruck with diesel fuel";
- }
- this.mainTasks = function() {
- return "Arrive at construction site, extend boom, deliver cement";
- }
- }
评论
zcfg
2007-12-03
好像是Ajax基础教程里的代码 我说怎么这么眼熟`` 建议看这篇 http://www.nirvanastudio.org/javascript/private-members-in-javascript.html
zcfg
2007-12-03
看你这个例子还不如看这个 http://www.nirvanastudio.org/javascript/private-members-in-javascript.html 对Douglas Crockford的原文翻译 讲的非常清楚
afcn0
2007-11-26
那你这就牵强了,那比如
这个ddd到底是外部还是内部呢,又比如另外一个贴,inherit继承的方法,算外部还是内部呢
c=new test;
c.ddd=function(){alert(a)}
这个ddd到底是外部还是内部呢,又比如另外一个贴,inherit继承的方法,算外部还是内部呢
dikar
2007-11-26
你的test2方法算是外部方法,不能访问到内部的私有属性
afcn0
2007-11-26
我没那么说,我是说
我是说既然是私有属性,那么test1 test2同为对象方法,是否都可以得到私有属性呢
function test(){
var a=123;
this.test1=function(){alert(a)};
}
test.prototype.test2=function(){alert(a)};
new test().test1();
new test().test2();
我是说既然是私有属性,那么test1 test2同为对象方法,是否都可以得到私有属性呢
dikar
2007-11-26
这个里面的私有属性你不能在类外调用(使用圆点)这里的私有你可以借鉴下JAVA里的私有这个概念。
afcn0
2007-11-26
不对,这个和私有根本毫无关系,也根本不是什么类,只是js当中错巧支持函数链scope保留的一种机制。那私有属性可以通过圆形方法调用吗,也是类的方法,和this没吗区别
dikar
2007-11-26
类中不是用this变量声明的变量或者方法就可以称为私有的
afcn0
2007-11-26
只讲其然,不讲其所以然,这种东西教育效果不好。
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则







评论排行榜