块级作用域
(function(){
//这里是块级作用域
})()
例如:
(function(){
for(var
i=0i<5i++){
alert(i)//0,1,2,3,4
}
})()
alert(i)//error
上例中,定义了一个块级作用域,变量i在块级作用域中可见的,但是在块级作用域外部则无法访问。
这种技术经常在全局作用域中被用在函数外部,从而限制向全局作用域中添加过多的变量和函数。
私有变量
任何在函数中定义的变量,都可以认为是私有变量。因为不能在函数的外部访问这些变量。私有变量包括函数的参数、局部变量和在函数内部定义的其他函数。
我们把有权访问私有变量和私有函数的公有方法称为特权方法:
function
MyObject(){
//私有变量和私有函数
var
privateVariable
=
10
function
privateFunction(){
return
false
}
//特权方法,特权方法作为闭包有权访问在构造函数中定义的所有变量和函数
this.publicMethod
=
function
(){
privateVariable++
return
privateFunction()
}
}
var
obj
=
new
MyObject()
obj.publicMethod()//
原型模式定义共有方法:
(function(){
//私有变量和私有函数
var
privateVariable
=
10
function
privateFunction(){
return
false
}
//构造函数
MyObject
=
function(){
}
//公有/特权方法
MyObject.prototype.publicMethod
=
function(){
privateVariable++
return
privateFunction()
}
})()
模块模式:
var
singleton
=
function(){
//私有变量和私有函数
var
privateVariable
=
10
function
privateFunction(){
return
false
}
//特权/公有方法和属性
return
{
publicProperty:
true,
publicMethod
:
function(){
privateVariable++
return
privateFunction()
}
}
}()
更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
您可能感兴趣的文章:详解JavaScript
新语法之Class
的私有属性与私有方法JavaScript私有变量实例详解浅谈js继承的实现及公有、私有、静态方法的书写深入了解JavaScript
私有化
可以使用闭包的方法:function aa() {
var a = 'hello'
return function(){
return a
}
}
然后在外面接收:
var fn=aa()//返回一个匿名函数
var a=fn()//获取到匿名函数中的返回值
根据作用域链的原理内部的函数可以访问到外部函数的变量,然后将获取的变量返回即可。