手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >如何在JavaScript中实现私有属性的写类方式(一)
如何在JavaScript中实现私有属性的写类方式(一)
摘要:之前讨论过JavaScript中的写类方式。但没有讨论私有的实现。这篇看下。我们知道JS中私有属性的实现本质就是var+closure。如下...

之前讨论过JavaScript中的写类方式。但没有讨论私有的实现。这篇看下。

我们知道JS中私有属性的实现本质就是 var + closure。如下

复制代码 代码如下:

function Person(n, a){

// public

this.name = n;

// private

var age = a;

this.getName = function(){

return this.name;

}

this.getAge = function(){

return age;

}

}

测试如下,age是私有的,使用点操作符无法获取到,而只能使用getName方法。

复制代码 代码如下:

var p = new Person('jack',23);

console.log(p.age); // undefined

console.log(p.getAge()); // 23

以上没什么稀奇的,下面我们使用一个工具函数来实现。

复制代码 代码如下:

/**

* @param {String} className

* @param {Function} classImp

*/

function $class(className, classImp){

function clazz(){

if(typeof this.init == "function"){

this.init.apply(this, arguments);

}

}

classImp.call(clazz.prototype);

window[className] = clazz;

}

写一个类

复制代码 代码如下:

$class('Person', function(){

// 私有属性都定义在这

var age = '';

this.init = function(n, a){

// 共有属性挂在this上,初始化

this.name = n;

// 私有属性初始化

age = a;

};

this.getName = function(){

return this.name;

};

this.getAge = function(){

return age;

}

});

new一个实例对象

复制代码 代码如下:

var p = new Person('jack',23);

console.log(p.name); // jack 共有的可使用点操作符获取

console.log(p.age); // undefined 私有的不能通过点操作符获取

console.log(p.getAge()); // 23 私有的age只能通过共有的方法getAge获取

【如何在JavaScript中实现私有属性的写类方式(一)】相关文章:

javascript实现炫酷的拖动分页

javascript实现Table排序的方法

JavaScript中的Math.SQRT1_2属性使用简介

基于JavaScript实现智能右键菜单

JavaScript实现斗地主游戏的思路

javascript实现十秒钟后注册按钮可点击的方法

JavaScript中Math.SQRT2属性的使用详解

JavaScript实现简单的数字倒计时

用JavaScript实现对话框的教程

javascript实现查找数组中最大值方法汇总

精品推荐
分类导航