javascript 实现继承。
javascript如何实现继承呢?
这是我写的一个基类
JScript codefunction Animal() { //私有变量 var _name; var _color; //公共变量 this.type = "我是动物"; //特权变量 this.setName = function (name) { _name = name; } this.getName = function () { return _name; } this.setColor = function (color) { _color = color; } this.getColor = function () { return _color; } //私有方法 function Action() { alert("我在大便,不要看!"); } //公用方法 this.Show = function () { alert("我是" + _name + ",我的颜色是" + _color); } //静态方法 Animal.Extend = function (NewObj) { NewObj.prototype = new Animal(); NewObj.prototype.constructor = NewObj["constructor"]; NewObj.prototype.method_d = NewObj["method_d"]; return NewObj; } }
就是在外面定义一个对象调用Extend方法后能实现继承Animal的公开成员。
类似这样。
JScript codevar newObj = { // 定义公共属性 prototy_b: '123', //定义构造函数 constructor: function () { // 定义私有属性 var _id = '123456'; // 定义特权属性 this.name = 'bbbb'; // 定义特权方法 this.getId = function () { return _id; }; this.setId = function (id) { _id = id; } }, //定义方法 method_d: function () { alert("这是dog类的继承方法"); } }; var aimal = new Animal(); var dog= Animal.Extend(newObj );
希望高人指点
------解决方案--------------------
JavaScript中要实现继承,其实就是实现三层含义:
1、子类的实例可以共享父类的方法;
2、子类可以覆盖父类的方法或者扩展新的方法;
3、子类和父类都是子类实例的“类型”。
JavaScript中,并不直接从语法上支持继承,但是可以通过模拟的方法来实现继承,以下是关于实现继承的几种方法的总结:
1、构造继承法
2、原型继承法
3、实例继承法
4、拷贝继承法
1、构造继承法:
在子类中执行父类的构造函数。
JScript code<SCRIPT LANGUAGE="JavaScript"> 2 <!-- 3 function dwn(s) 4 { 5 document.write(s+'<br/>'); 6 } 7 8 //定义一个Collection类型 9 function Collection(size)10 {11 this.size = function(){return size}; //公有方法,可以被继承12 }1314 //定义一个_Collection类型15 function _Collection(_size)16 {17 this._size = function(){return _size}; //公有方法,可以被继承18 }1920 Collection.prototype.isEmpty = function() //静态方法,不能被继承21 {22 return this.size() == 0;23 }2425 //定义一个ArrayList类型,它“继承”Colleciton类型26 function ArrayList()27 {28 var m_elements = []; //私有成员,不能被继承29 m_elements = Array.apply(m_elements,arguments);3031 //ArrayList类型继承Colleciton32 this.base = Collection;33 this.base.call(this,m_elements.length);3435 this.base = _Collection; //可以实现多态继承36 this.base.call(this,m_elements.length); 3738 this.add = function()39 {40 return m_elements.push.apply(m_elements,arguments); 41 }4243 this.toArray = function()44 {45 return m_elements;46 }47 }4849 ArrayList.prototype.toString = function()50 {51 return this.toArray().toString();52 }5354 //定义一个SortedList类型,它继承ArrayList类型55 function SortedList()56 {57 //SortedList类型继承ArrayList58 this.base = ArrayList;59 this.base.apply(this,arguments);6061 this.sort = function()62 {63 var arr = this.toArray();64 arr.sort.apply(arr,arguments);65 }66 }6768 //构造一个ArrayList69 var a = new ArrayList(1,2,3);70 dwn(a); //1,2,371 dwn(a.size()); //3 a从Collection继承了size()方法72 dwn(a.isEmpty); //undefined 但是a没有继承到isEmpty()方法7374 dwn(a._size()); //3 可以实现多态继承7576 //构造一个SortedList77 var b = new SortedList(3,1,2);78 dwn(b.toArray());79 b.add(4,0); //b 从ArrayList继承了add()方法80 dwn(b.toArray()); //b从ArrayList继承了toArray()方法81 b.sort(); //b自己实现sort()方法82 dwn(b.toArray());83 dwn(b);84 dwn(b.size()); //b从Collection继承了size()方法85 //-->86 </SCRIPT>
查询谷 - www.chaxungu.com
javascript 实现继承。该如何解决
编辑:chaxungu时间:2022-10-02 23:16:50分类:web开发