JavaScript 之面向对象中的封装
对象的属性外界是可读可写 如何来达到封装的额目的?
- 答:可通过闭包+局部变量来完成
在构造函数内部声明局部变量 和普通方法
因为作用域的关系 只有构造函数内的方法
才能访问局部变量 而方法对于外界是开放的
因此可以通过方法来访问 原本外界访问不到的局部变量 达到函数封装的目的
function Girl(name,age){
var love = '小明'; // love 是局部变量 准确说不属于对象 属于这个函数的额激活对象 函数调用时必将产生一个激活对象 love 在激活对象身上激活对象有作用域的关系 有办法访问 加一个函数提供外界访问
this.name = name;
this.age = age;
this.say = function () {
return love;
};
this.movelove = function (){
love = '小轩'; //35
}
}
var g = new Girl('yinghong',22);
console.log(g);
console.log(g.say());//小明
console.log(g.movelove());//undefined 因为 35 行没有返回
console.log(g.say());//小轩
function fn(){
function t(){
//var age = 22;//声明 age 变量 在 t 的激活对象上
age = 22;//赋值操作 t 的激活对象上找 age 属性 ,找不到 找 fn 的激活对象....再找到 最终找到 window.age = 22;
//不加 var 就是操作 window 全局属性
}
t();
}
console.log(fn());//undefined
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: JavaScript 之面向对象中的多态
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论