当前第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》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » Javascript中什么是私有成员