`

javascript私有属性和信息隐藏

    博客分类:
  • AJAX
阅读更多
xml 代码
  1. 私有属性在构造函数中用var关键字定义,私有属性只能用特权函数公用访问,特权函数是在构造函数中用this关键字定义的函数。私有属性不能使用点记法来访问,只能用公用函数访问。   
  2. 如下是个例子   
  3.   
  4. function Vehicle() {   
  5.     var wheelCount = 4;   
  6.     var curbWeightInPounds = 4000;   
  7.   
  8.     this.getWheelCount = function() {   
  9.         return wheelCount;   
  10.     }   
  11.   
  12.     this.setWheelCount = function(count) {   
  13.         wheelCount = count;   
  14.     }   
  15.   
  16.     this.getCurbWeightInPounds = function() {   
  17.         return curbWeightInPounds;   
  18.     }   
  19.   
  20.     this.setCurbWeightInPounds = function(weight) {   
  21.         curbWeightInPounds = weight;   
  22.     }   
  23.   
  24.     this.refuel = function() {   
  25.         return "Refueling Vehicle with regular 87 octane gasoline";   
  26.     }   
  27.   
  28.     this.mainTasks = function() {   
  29.         return "Driving to work, school, and the grocery store";   
  30.     }   
  31. }   
  32.   
  33. function SportsCar() {   
  34.     this.refuel = function() {   
  35.         return "Refueling SportsCar with premium 94 octane gasoline";   
  36.     }   
  37.   
  38.     this.mainTasks = function() {   
  39.         return "Spirited driving, looking good, driving to the beach";   
  40.     }   
  41. }   
  42.   
  43. function CementTruck() {   
  44.     this.refuel = function() {   
  45.         return "Refueling CementTruck with diesel fuel";   
  46.     }   
  47.   
  48.     this.mainTasks = function() {   
  49.         return "Arrive at construction site, extend boom, deliver cement";   
  50.     }   
  51. }   
分享到:
评论
9 楼 zcfg 2007-12-03  
好像是Ajax基础教程里的代码 我说怎么这么眼熟`` 建议看这篇 http://www.nirvanastudio.org/javascript/private-members-in-javascript.html
8 楼 zcfg 2007-12-03  
看你这个例子还不如看这个 http://www.nirvanastudio.org/javascript/private-members-in-javascript.html  对Douglas Crockford的原文翻译 讲的非常清楚
7 楼 afcn0 2007-11-26  
那你这就牵强了,那比如
c=new test;
c.ddd=function(){alert(a)}

这个ddd到底是外部还是内部呢,又比如另外一个贴,inherit继承的方法,算外部还是内部呢
6 楼 dikar 2007-11-26  
你的test2方法算是外部方法,不能访问到内部的私有属性
5 楼 afcn0 2007-11-26  
我没那么说,我是说
function test(){
var a=123;
this.test1=function(){alert(a)};
}
test.prototype.test2=function(){alert(a)};
new test().test1();
new test().test2();

我是说既然是私有属性,那么test1 test2同为对象方法,是否都可以得到私有属性呢
4 楼 dikar 2007-11-26  
这个里面的私有属性你不能在类外调用(使用圆点)这里的私有你可以借鉴下JAVA里的私有这个概念。

3 楼 afcn0 2007-11-26  
不对,这个和私有根本毫无关系,也根本不是什么类,只是js当中错巧支持函数链scope保留的一种机制。那私有属性可以通过圆形方法调用吗,也是类的方法,和this没吗区别
2 楼 dikar 2007-11-26  
类中不是用this变量声明的变量或者方法就可以称为私有的
1 楼 afcn0 2007-11-26  
只讲其然,不讲其所以然,这种东西教育效果不好。

相关推荐

    JavaScript之私有属性,私有函数,函数实现对外不可见

    在JavaScript编程中,私有属性和私有函数是实现封装和数据隐藏的关键概念。这些特性使得我们可以更好地控制代码的访问权限,防止外部直接修改或访问内部状态,从而增强程序的安全性和稳定性。在JavaScript中,虽然...

    详解JavaScript 新语法之Class 的私有属性与私有方法

    私有属性和私有方法是面向对象编程中实现封装的重要手段,它们帮助开发者隐藏类的内部实现细节,防止外部直接访问和修改类内部的状态。在JavaScript中,私有成员可以通过在属性名或方法名前加上一个“#”符号来定义...

    如何在JavaScript中实现私有属性的写类方式(一)

    这两种方法都基于JavaScript的函数作用域和闭包特性来实现私有属性的封装和隐藏,使得对象内部状态得到保护,防止外部的直接访问和修改。这种方式在面向对象编程中,是非常重要的一个概念,有助于我们编写更为安全...

    javascript设计模式 封装和信息隐藏(上).docx

    JavaScript设计模式中的封装和信息隐藏是面向对象编程中的核心概念,它们旨在保护数据免受不必要的外部访问和修改,从而提高代码的稳定性和可维护性。虽然JavaScript不是一种典型的面向对象语言,但通过一些技巧和...

    JavaScript_设计模式_中文版_第3章-封装和信息隐藏

    JavaScript设计模式中的封装和信息隐藏是面向对象编程中至关重要的概念。封装是将对象的内部状态(数据)和行为(方法)结合在一起,对外提供一个有限的接口进行交互,以此来保护内部数据的完整性和安全性。信息隐藏...

    JavaScript 私有成员分析

    JavaScript是世界上最受误解的语言。有人认为它缺少信息隐藏的属性(封装),因为JavaScript对象不能拥有私有变量和函数。但这是误解。JavaScript对象可以有私有成员。下面进行说明。

    如何在JavaScript对象中嵌入私有成员.doc

    在JavaScript中,由于其动态类型和全局作用域的特性,实现真正的私有成员并不直接。然而,可以利用闭包这一特性来模拟私有成员。 1. 为何使用私有成员(Private Members) 私有成员的主要目的是限制对对象内部状态...

    面向对象JavaScript精要(英文原版pdf)

    - **第五章:封装和私有性**:讲解如何在JavaScript中实现封装以及保护私有数据的方法。 - **第六章:多态**:讨论多态性的概念及其在JavaScript中的应用。 - **第七章:混合式编程**:介绍如何结合面向对象编程与...

    javascript得个人总结和一些特效实例

    7. **闭包**:JavaScript的闭包特性是其强大之处,它可以捕获并存储外部作用域的变量,常用于封装变量、实现私有属性和方法,或者在异步操作中保持状态。 8. **原型和继承**:JavaScript采用原型链实现对象继承,一...

    深入了解JavaScript 私有化

    JavaScript私有化的概念源于编程语言中对于数据封装的需求,它允许开发者创建不能直接从外部访问的变量和方法,以保护内部状态不被篡改。在JavaScript中,虽然没有内置的私有变量或方法,但可以通过一些技巧来模拟...

    Javascript 面向对象的JavaScript进阶

    虽然JavaScript没有提供严格的封装机制,但我们可以通过设置私有变量和公共方法来实现类似的功能。通常,开发者会使用闭包或者ES6的类来模拟封装。 **示例代码:** ```javascript function Person(name, age) { ...

    学用JavaScript设计模式

    例如,在JavaScript中,我们经常会利用函数作用域和闭包来模拟私有方法和私有属性,以及使用原型链来模拟类继承。 最后,本书提供了非常实用的参考资料,包括了一些作者认可的技术专家和其推荐的博客和微博,读者...

    The Principles of Object Oriented.JavaScript

    - **鸭子类型**:JavaScript没有严格的类型检查,如果一个对象看起来像某种类型的对象(即拥有该类型对象应有的属性和方法),那么就可以将其当作该类型的对象使用。 #### 七、总结 《面向对象的JavaScript原则》是...

    JavaScript核心及实践

    - **7.2闭包的用途**: 闭包可以用于实现数据隐藏和管理私有状态,还可以用于创建模块化结构。 - **7.3应该注意的问题**: 使用闭包时要注意内存泄漏以及函数上下文的正确引用。 #### 面向对象的JavaScript - **8.1...

    基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式

    使用WeakMap可以创建私有属性,并且这些属性是对外部隐藏的,因为WeakMap结构的键是不公开的。这种方法的优点是私有属性安全不易被外部访问,但缺点同样在于编写方式上比较复杂,且可能影响垃圾回收。 上述实现私有...

    100个Javascript特效页面以及源代码

    7. **闭包**:闭包是JavaScript中的高级特性,它可以捕获其词法作用域内的变量,常用于封装私有变量和方法,或者创建记忆化函数。 8. **事件委托**:为避免为每个元素绑定事件处理器,可以将事件绑定到父元素上,...

    JavaScript面向对象编程指南

    在JavaScript中,我们可以通过闭包或者类的私有属性来实现封装: ```javascript class Box { constructor(width, height) { this._width = width; this._height = height; } getArea() { return this._width ...

    Google JavaScript 编码规范

    7. **可见性(私有域和保护域)**:对于类成员的可见性控制,应使用特定的命名约定来区分私有成员和公共成员。 8. **JavaScript类型**:应熟悉JavaScript的类型系统,包括基本类型和对象类型。理解这些类型之间的...

Global site tag (gtag.js) - Google Analytics