js继承
2016-07-16 18:08
531 查看
js继承:
一.父类构造函数继承:
1.apply这是JavaScript内置的一个方法,只要是声明成为function的对象,都会拥有该成员。对于后台技术较高的同学,你可以将apply理解为反射调用。对于并不了解反射的同学,可以这样理解:我们正常情况下调用一个方法是对象.方法名(参数列表),使用apply的话,我们就是方法名.apply(对象,参数列表),顺序不一样了
2.arguments这个关键字只能在function内部使用,表示的是参数列表,在上述示例中arguments中包含的就是name和age
二.原型的继承
子类的修改不应该对父类造成影响。那我们不能让父类的原型直接赋给子类的原型,而用父类型的一个副本就行了。
leader.prototype = new worker();
通过这行代码,我们相当于通过创建了一个worker实例,并将这个实例中的各个成员赋值给leader的原型,这样一来,对子类的修改仅仅影响worker的实例,而不会影响worker的原型。
leader.prototype.startWork = function(){
//some code here;
};
var w = new worker("",0);
var l = new leader("",0);
document.write(w.startWork == l.startWork); //false
来源地址:http://www.hubwiz.com/
一.父类构造函数继承:
function leader(name,age){ worker.apply(this,arguments); }
1.apply这是JavaScript内置的一个方法,只要是声明成为function的对象,都会拥有该成员。对于后台技术较高的同学,你可以将apply理解为反射调用。对于并不了解反射的同学,可以这样理解:我们正常情况下调用一个方法是对象.方法名(参数列表),使用apply的话,我们就是方法名.apply(对象,参数列表),顺序不一样了
2.arguments这个关键字只能在function内部使用,表示的是参数列表,在上述示例中arguments中包含的就是name和age
二.原型的继承
子类的修改不应该对父类造成影响。那我们不能让父类的原型直接赋给子类的原型,而用父类型的一个副本就行了。
leader.prototype = new worker();
通过这行代码,我们相当于通过创建了一个worker实例,并将这个实例中的各个成员赋值给leader的原型,这样一来,对子类的修改仅仅影响worker的实例,而不会影响worker的原型。
leader.prototype.startWork = function(){
//some code here;
};
var w = new worker("",0);
var l = new leader("",0);
document.write(w.startWork == l.startWork); //false
function worker(name, age){ this.name = name; this.age = age; this.isWorking = false; } worker.prototype.startWork = function(){ if(this.isWorking) return; this.isWorking = true; }; function leader(name, age){ worker.apply(this, arguments); this.workers = []; } leader.prototype = new worker(); //重点 leader.prototype.startWork = function(){ //重写工人的开始工作方法 if(this.isWorking) return; var workerLength = this.workers.length; for(var i = 0; i < workerLength; i++){ this.workers[i].startWork(); } }; var tom = new leader("tom",40); var jim = new worker("jim",20); tom.workers.push(jim); tom.startWork(); var html = "tom和jim两个实例的startWork方法是否共用内存 : " + (tom.startWork == jim.startWork).toString(); document.write(html);
来源地址:http://www.hubwiz.com/
相关文章推荐
- JSP及相关技术知识总结
- js中substr,substring,indexOf,lastIndexOf的用法
- js缓存计算
- rapidjson解析数据
- jsp解决乱码问题。
- Extjs的onReady方法
- javascript
- js实现继承的5种方式
- 推荐几款JS表格控件
- JSP基础概要
- JSP基础概要
- JSP基础概要
- JavaScript 字符串
- seaJs
- javaScript--05 DOM基础 12.8
- javaScript--05 DOM基础 12.7
- javaScript--05 DOM基础 12.6
- javaScript--05 DOM基础 12.5
- javaScript--05 DOM基础 12.4
- javaScript--05 DOM基础 12.3