最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

如何在JavaScript中实现私有属性的写类方式(二)_javascript技巧

来源:懂视网 责编:小采 时间:2020-11-27 21:16:42
文档

如何在JavaScript中实现私有属性的写类方式(二)_javascript技巧

如何在JavaScript中实现私有属性的写类方式(二)_javascript技巧:上一篇写了个工具函数$class,这篇再完善以下。实现以下功能 1,继承 2,子类继承父类时,不继承父类的私有属性 代码如下:/** * @param {String} className * @param {String/Function} superCls * @param {Function}
推荐度:
导读如何在JavaScript中实现私有属性的写类方式(二)_javascript技巧:上一篇写了个工具函数$class,这篇再完善以下。实现以下功能 1,继承 2,子类继承父类时,不继承父类的私有属性 代码如下:/** * @param {String} className * @param {String/Function} superCls * @param {Function}

上一篇写了个工具函数$class,这篇再完善以下。实现以下功能

1,继承

2,子类继承父类时,不继承父类的私有属性
代码如下:
/**
* @param {String} className
* @param {String/Function} superCls
* @param {Function} classImp
*/
function $class(className, superCls, classImp){
if(superCls === '') superCls = Object;
function clazz(){
if(typeof this.init == "function"){
this.init.apply(this, arguments);
}
}
var p = clazz.prototype = new superCls();
var _super = superCls.prototype;
window[className] = clazz;
classImp.apply(p, [_super]);
}

先写个父类
代码如下:
/**
* 父类 Person
*/
$class('Person','',function(){
// 私有属性age
var age;
this.init = function(n, a){
// 公有属性name
this.name = n;
// 私有属性初始化
age = a;
};
this.getName = function(){
return this.name;
};
this.setName = function(name){
this.name = name;
}
this.getAge = function(){
return age;
};
this.setAge = function(a){
age = a;
};
});

写子类,继承于Person
代码如下:
$class("Man",Person, function(supr){
var school;
this.init = function(n, a, s){
supr.init.apply(this, [n,a]);
school = s;
}
this.getSchool = function(){
return school;
};
this.setSchool = function(s){
school = s;
};
});

new一个子类实例
代码如下:
var m = new Man('tom', 25, 'pku');
console.log(m.name); // tom 继承父类的共有属性name可以直接使用点操作符获取
console.log(m.age); // undefined 父类的私有属性age不能直接使用点操作符获取
console.log(m.getAge()); // 25 可通过父类的共有方法getAge获取私有属性age
console.log(m.school); // undefined Man自己的私有属性仍然不能通过点操作符获取
console.log(m.getSchool()); // pku 通过getSchool()方法获取私有属性school

文档

如何在JavaScript中实现私有属性的写类方式(二)_javascript技巧

如何在JavaScript中实现私有属性的写类方式(二)_javascript技巧:上一篇写了个工具函数$class,这篇再完善以下。实现以下功能 1,继承 2,子类继承父类时,不继承父类的私有属性 代码如下:/** * @param {String} className * @param {String/Function} superCls * @param {Function}
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top