js对象的继承以及公有私有属性的定义和读写
最近想写一些js工具,有些方面需要用到面向对象的方法,比如继承父类属性和方法、通过私有化隐藏某些对象的属性等,因为没有系统的学习js,所以不知道怎么做,觉得很伤脑筋。
今天受到技术群里朋友的提示,并查阅了一些资料,终于把这个问题解决了,真是大快人心啊,哈哈,哈哈,哈哈哈哈!!!
下面列举了两种继承方式,各有优缺点,可根据业务需要选择,现把自己调试的代码整理如下,以备参考:
<script type="text/javascript">
function TestClassA(name, number) {
this.name = name; //public
this.number = number; //public var account = ''; //private
var phone = '13612345678'; //private this.getAccount = function() {
return account;
}
this.setAccount = function (a) {
account = a;
}
} /* 类型继承(没有继承原型,且难以多重继承)
// 1. 定义即继承(固定不变的继承)
function TestClassB(x, y) {
this.info = 'name:' + x + ', number:' + y; //通过调用父类构造方法继承属性
TestClassA.call(this, x, y);
}
//创建实例
var b = new TestClassB("test name", 123);
//验证
console.log(b); // 2. 使用时继承(灵活多变的继承)
function TestClassB(p, x, y) {
this.info = 'name:' + x + ', number:' + y; //通过调用传入的类的构造方法继承属性
p.call(this, x, y);
}
//创建实例
var b = new TestClassB(TestClassA, "test name", 123);
//验证
console.log(b);
*/ // 原型链继承(继承原型,方便多重继承)
function TestClassB(p, x, y) {
this.info = 'name:' + x + ', number:' + y;
}
TestClassB.prototype = new TestClassA();
function TestClassC(p, x, y) {
this.Msg = 'msg';
}
TestClassC.prototype = new TestClassB();
//创建实例
var c = new TestClassC("test c name", 456);
c.setAccount("test account");
console.log(c);
</script>
js对象的继承以及公有私有属性的定义和读写的更多相关文章
- Java中子类能继承父类的私有属性吗?
前段时间去听老师讲课的时候,老师告诉我子类是可以继承父类所有的属性和方法的.当时我是极其疑惑的,因为之前学校考试时这个考点我记得很清楚:子类只能继承父类的非私有属性和方法.老师给我的解释是这样的--先 ...
- js对象和继承总结
创建对象方式: [工厂模式]:无法解决对象识别问题 [构造函数模式]:每个方法都要在每个实例上创建一遍 [原型模式]:原型上属性为引用类型的问题,见例子 [组合模式]:解决上述问题 [动态原型模式]: ...
- js对象的数据属性和访问器属性
js面向对象 ECMA-262第5版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特征.ECMA-262定义这些特性是为了实现javascript引擎用的,因此 ...
- Java 继承问题 -- 子类是否继承父类的私有属性
理解一: 子类会继承父类的所有属性和方法,至于能不能直接访问,那就是访问权限的问题了. 例如:父类有个private String name; 属性.子类会继承下来,但子类访问不了,因为是privat ...
- js 对象方法、类方法、原型方法的区别;私有属性、公有属性、公有静态属性的区别
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- 对象方法、类方法、原型方法 && 私有属性、公有属性、公有静态属性
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- JS 详解对象的继承
在学习这篇博文前,请先移步我的另外一篇博文:JS 一张图理解prototype.proto和constructor的关系,先弄清楚“原型链”,这样对于理解继承会非常有效. 注意:博文中提到的“属性”, ...
- 洗礼灵魂,修炼python(33)--面向对象编程(3)—特殊类方法__init__,公有属性,私有属性
在上一篇博文里,传入参数时,是在实例化对象后且在调用方法时才传入参数,感觉是不是有点繁琐对吧?可以在实例化的时候就传入参数吗?可以的,这就是本篇博文的要讲到的构造器——__init__(两边双下划线) ...
- Js对象继承小结
1.继承 对象的定义好用一些的一般是把实例对象的属性定义在类里面,通过this指针指向具体实例属性.定义对象的public方法时将其绑定到prototype中.子类在继承父类时可以通过对象冒充来继承父 ...
随机推荐
- ionic 里使用 iframe 可能遇到的问题
无法访问外部url的问题--两个步骤解决: iframe的src属性用ng-src属性替代,并指明绑定对象: ng-src="{{targetUrl}}" 在controller里 ...
- AX7: CREATE NEW PACKAGE\MODEL
To create a new package\model on AX first you should understand the concept of Packages and Models o ...
- CSS VS JS动画,哪个更快[译]
英文原文:https://davidwalsh.name/css-js-animation 原作者Julian Shapiro是Velocity.js的作者,Velocity.js是一个高效易用的js ...
- JAVA 通过LDAP获取AD域用户及组织信息
因为工作需求近期做过一个从客户AD域获取数据实现单点登录的功能,在此整理分享. 前提:用户可能有很多系统的情况下,为了方便账号的统一管理使用AD域验证登录,所以不需要我们的系统登录,就需要获取用户的A ...
- encodeURI来解决URL传递时的中文问题
在AJAX浏览器来进行发送数据时,一般它所默认的都是UTF-8的编码. 使用JQUERY中所提供的方法来做操作 encodeURI function verify() { //解决中文乱麻问题的 ...
- js中js数组、对象与json之间的转换
在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键.例如:JSON字符串:var str1 = '{ &quo ...
- java编码解码乱码问题
服务器设值(中文)到界面使用了两次编码: String pageJson=URLEncoder.encode(URLEncoder.encode(str,"GBK"), " ...
- python 实现 斐波那契数列
#!usr/bin/python#_*_coding=utf-8_*_ def fin(n): li=[0,1] for i in range(2,n): li.append(li[-1]+li[-2 ...
- NSSortDescriptor对象进行数组排序
//创建一个数组 NSArray *array = @[@"zhangsan", @"lisi", @"zhonger", @"z ...
- mysql自动添加最后修改时间
字段不为空 NOT NULL 类型 :timestamp 默认值 :CURRENT_TIMESTAMP