javascript的私有成员(private)

红尘笑96

红尘笑96

2016-02-20 00:50

get新技能是需要付出行动的,即使看得再多也还是要动手试一试。今天图老师小编跟大家分享的是javascript的私有成员(private),一起来学习了解下吧!

对象

Javascript 根本上是和对象相关的。数组是对象。函数是对象。对象是对象。那什么是对象呢?对象是名-值对的集合。名是字符串,值可以是字符串,数字,布尔值或者对象(包括数组和函数)。通常对象是像哈希表一样执行地,这样便于值地快速检索。

如果值是函数,我们可以认为这是一个方法。当一个对象地方法被调用的时候,this 变量就设置为这个对象。方法就可以通过 this 变量来访问实例变量。

对象可以由用来初始化对象的构造函数生成。构造函数提供了其他语言中类所提供的特性,包括静态变量和方法。

公共

对象的成员全部是公共成员。任何函数都可以访问、修改或者删除这些成员,或者增加新成员。有两种向新对象中添加成员的方法:

在构造函数中添加

这个技术通常用于初始化公共实例变量。使用构造函数的 this 变量向对象中添加成员。

function Container(param){
 this.member = param;
}

这样,如果我们创建一个新对象:

 var myContainer = new Container('abc');

这样 myContainer.member 就包含 ‘abc’ 了。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

在原型中添加

这个技术通常用于添加公共方法。当一个成员被检索并且没能在对象本身里面找到时,就要从对象的构造函数的原型成员里面寻找。原型机制是用于继承的。也用于节省内存。向一个构造函数生成的所有对象中添加一个方法,只需要向构造函数原型中添加一个函数:

 Container.prototype.stamp = function(string){
  return this.member + string;
 }

因此,我们可以调用这个方法:

 myContainer.stamp('def')

结果为 ‘abcdef’。

私有

私有成员是由构造函数生成的。一般构造函数的变量和参数都是私有成员。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

 function Container(param){
  this.member = param;
  var secret = 3;
  var that = this;
 }

这个构造函数生成了3个私有实例变量:param,secret 和 that。它们和对象相关联,但是它们不仅在函数外边不可访问,而且对对象自身的公共方法来说也是不可访问的。它们只可以被私有方法访问。私有方法是构造函数的内部函数。

function Container(param) {
 
    function dec() {
        if (secret 0) {
            secret -= 1;
            return true;
        } else {
            return false;
        }
    }
 
    this.member = param;
    var secret = 3;
    var that = this;
}

私有方法 dec 检查 secret 实例变量。如果它大于零,将其减一并返回 true。否则返回 false。它可以用作限定对象使用3次。

按照习惯,我们设置了一个私有的 that 参数。它使得这个对象对于私有方法使可见的。在 ECMAScript 语言规范中,这是一个可行的错误,它使得 this 对于内部函数被不正确地设置。(This is a workaround for an error in the ECMAScript Language Specification which causes this to be set incorrectly for inner functions.)

私有方法不能被公共方法调用。要想使得私有方法有用,需要介绍一下特权方法。

展开更多 50%)
分享

猜你喜欢

javascript的私有成员(private)

Web开发
javascript的私有成员(private)

AS2.0的私有,公有成员,类继承和as嵌套

flash教程
AS2.0的私有,公有成员,类继承和as嵌套

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

AJAX中JavaScript类的三种成员

Web开发
AJAX中JavaScript类的三种成员

JavaScript类的静态成员及其修改对象实例的数据

Web开发
JavaScript类的静态成员及其修改对象实例的数据

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

私有功能空间设计

设计 卧室
私有功能空间设计

如何丰胸更有成效?

丰胸
如何丰胸更有成效?

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

JavaScript如何重构嵌套循环和递归

JavaScript如何重构嵌套循环和递归

Windows7系统优化提速宝典

Windows7系统优化提速宝典
下拉加载更多内容 ↓