JavaScript对象封装:私有属性与特权方法详解
作者:纸飞机时间:2026-10-24 20:09:01浏览:495
本文介绍JavaScript中通过函数作用域实现信息封装的技术。重点讲解如何利用特权方法访问私有数据,以及公有方法在原型链上的内存优化机制。通过Person类示例,演示如何平衡数据隐私与内存效率,掌握JavaScript面向对象编程的核心概念。
JavaScript对象的信息封装
JavaScript对象的信息封装
在开始编写代码之前,有必要先明确几个核心概念。
封装是指将内部数据的表现形式及具体实现细节隐藏起来,不对外直接暴露。
私有属性和方法是指那些无法被外部直接访问的成员,外界只能通过公开的接口进行存取和交互。
在JavaScript中,作用域的概念仅存在于函数级别。这意味着在函数内部定义的变量或方法,在函数外部是无法直接访问的。
特权方法是指定义在函数内部的方法,它能够访问函数内部的变量(即私有属性)。需要注意的是,每创建一个实例,就会生成一个新的特权方法副本,这会消耗较多的内存空间。
p.setData("sky", "26", "vece@vip.qq.com");
特权方法与公有方法的实现
具体实现代码如下:
function Person() {
{
/*
/* 声明私有的数据成员 */
/* 包括昵称、年龄和邮箱 */
*/
var nickName, age, email;
/*
/* 定义需要访问私有数据的方法(即特权方法) */
/* 注意:每生成一个实例,都会为特权方法创建一个新的副本,这会占用更多内存 */
*/
this.setData = function(pNickName, pAge, pEmail) {
{
nickName = pNickName;
age = pAge;
email = pEmail;
};
};
{
this.getData = function() {
}
}
/*
return [nickName, age, email];
};
*/
/* 定义不需要直接访问私有数据的方法(即公有方法) */
/* 无论生成多少个实例,公有方法在内存中只存在一份,通过原型链共享 */
{
Person.prototype = {
}
} showData: function() {
p.showData();
alert("个人信息:" + this.getData().join());
},
p.setData("sky", "26", "vece@vip.qq.com");
外部代码通过调用私有或公有方法来存取内部属性。代码使用示例
使用示例代码如下:
var p = new Person();
作者最新文章
JS动态构建复杂嵌套JSON对象的方法
2026-11-05 15:41:52
JS负数取余为什么是负数?详解余数与模运算区别
2026-11-05 13:34:41
JS 解压出现乱码或报错怎么解决?
2026-11-05 12:32:38
JS 中 startsWith、indexOf 与正则判断字符串前缀的对比
2026-11-04 22:19:43
JS解析Excel后怎么将数据转换为JSON格式
2026-11-04 20:58:28
