Javascript中什么是私有成员


当前第2页 返回上一页

特权方法是用 this 在构造器中分配的。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

function Container(param) {

 

    function dec() {

        if (secret > 0) {

            secret -= 1;

            return true;

        } else {

            return false;

        }

    }

 

    this.member = param;

    var secret = 3;

    var self = this;

 

    this.service = function () {

        if (dec()) {

            return self.member;

        } else {

            return null;

        }

    };

}

service 就是一个特权方法。前三次调用会返回'abc'。之后 ,它会返回 null。service调用的私有的 dec 方法,而 dec又访问了私有的 secret变量。service对其它的对象和方法是可见的,但不能直接访问私有成员。

闭包

这种公共、私有和特权成员的模式是可行的原因是由于JavaScript有 closure闭包。这个意味着一个内部的函数总是可以访问这个函数外部的变量和参数,甚至在外部的函数返回之后。这是这个语言的一个极其强大的特性。目前没有哪本关于JavaScript编程的书展示了如何发掘这个特性。大多数都没有提到。

私有和特权成员只能在对象构造的时候生成。公共成员可以在任意时刻添加。

模式

公共(Public)

1

2

3

4

function Constructor(...) {

    this.membername = value;

}

Constructor.prototype.membername = value;

私有(Private)

1

2

3

4

5

function Constructor(...) { 

    var self =  this;

    var membername =  value; 

    function  membername(...)  {...}

}

注意,实际上函数语句

1

function  membername(...)  {...}

是以下语句的缩写,两者相同:

1

var  membername = function  membername(...)  {...};

特权(Privileged)

1

2

3

function Constructor(...) { 

    this.membername =  function (...)  {...};

}

【推荐学习:javascript高级教程

以上就是Javascript中什么是私有成员的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

reduce的用法技巧(代码示例)

javascript中怎么去掉回车符

10个你可能不知道的很棒的js字符串技巧

javascript如何删除所有的cookie

javascript怎么设置元素文本内容

javascript可以放在css中吗

超过80%的面试者不及格的js 面试题

javascript怎么添加元素

jquery和javascript的区别有哪些

svg和css3实现环形渐变进度条的代码示例

更多相关阅读请进入《javascript》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...