首页 > 代码库 > javascript在私有作用域中定义私有变量和私有函数 (1)
javascript在私有作用域中定义私有变量和私有函数 (1)
javascript没有私有成员,但是有私有变量,所有对戏那个属性都是公有的
任何在函数中定义的变量,都可以认为是私有变量,因为函数内部不能访问。
私有变量包括:函数的参数、局部变量、函数内部定义的其他函数
- 在私有作用域中定义私有变量和私有函数
function MyObject(){ //私有变量和私有函数 var privateVariable=10; function privateFunction(params) { return false } //特权方法————有权访问私有变量和私有函数的方法 this.publicMethod=function(){ privateVariable++; return privateFunction } }
构造函数中定义了私有变量和函数,又创建了能访问私有变量和函数的特权方法
function Person(name) { this.getName = function() { return name; }; this.setName = function(value) { name = value; }; } var person = new Person("Candy"); alert(person.getName()); //"Candy" person.setName("Greg"); alert(person.getName()); //"Greg" var person2 = new Person("Tong"); alert(person2.getName()); //"Tong"
直接通过Person对象访问name是不行的,Person对象没有name这个属性
可以通过函数访问name,由于构成闭包,Person()的活动对象还在getName、setName的作用链域([[scope]] 属性)中,没有被销毁,函数通过作用链域访问到Person()活动对象的变量name
- 利用构造函数 在私有作用域中定义私有变量和私有函数的 缺点
每次创建对象,都会创建同一组新变量和新方法,但是方法都是一样的,没必要都创建新的方法。
- 解决方法
用静态私有变量实现
javascript在私有作用域中定义私有变量和私有函数 (1)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。