JavaScript 之面向对象中的封装

发布于 2024-05-02 04:41:14 字数 873 浏览 22 评论 0

对象的属性外界是可读可写 如何来达到封装的额目的?

  • 答:可通过闭包+局部变量来完成

在构造函数内部声明局部变量 和普通方法

因为作用域的关系 只有构造函数内的方法

才能访问局部变量 而方法对于外界是开放的

因此可以通过方法来访问 原本外界访问不到的局部变量 达到函数封装的目的

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

终难遇

暂无简介

文章
评论
27 人气
更多

推荐作者

Mr.HU

文章 0 评论 0

疯到世界奔溃

文章 0 评论 0

隔纱相望

文章 0 评论 0

萌无敌

文章 0 评论 0

梦幻的味道

文章 0 评论 0

自在安然

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文