上节课我们已经了解了PRototype
的基本使用:http://blog.csdn.net/github_26672553/article/details/54375735。
本节课,我们来完成对象的继承训练。
var God = new GodClass({ version:’1.0’, }); 在这里我们执行alert(God.version) 请设定一个GodClass.init方法,在该方法中传入参数,后面的任何实例对象不传参数也有version这个属性
var GodClass = function abc(obj){ if(this instanceof abc){ if(obj != undefined){ //把obj中的可枚举属性赋值给this Object.assign(this,obj); //注意:这个this,必须在你实例化GodClass之后才会产生 } }else{ alert('不要胡搞'); }}var God = new GodClass({version:'1.0'});alert(God.version); //弹出 '1.0'上面代码是可以的。
下面我们完成作业,通过一个类似静态函数的方式,修改GodClass
类
注意,我们给GodClass
增加了一个init
方法,该方法接收一个对象,我们把对象中的属性赋值给了原型(prototype)上。
以后我们只需要调用一次init
方法后,后面再实例化GodClass就不必传入参数了:
关键点 Function.prototype.call() 方法在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法
//基类var BaseNews = function () { this.display = function(){ alert('新闻基类'); };}var SportsNews = function () { BaseNews.call(this); //这样就继承了BaseNews类中的方法}我们使用SportsNews
类:
我们还可以通过另外的方式来扩展 除了在SportsNews中,还可以直接在Function
的原型上增加扩展,修改如下:
上面代码可以看出,我们给Function.prototype
增加了extends
方法,此方法就是用来扩展类的。 因为增加在原型上所以SportsNews
也有该方法,我们来扩展SportsNews
:
这个时候,发现实例化后的SportsNews对象,还是有display
方法,因为extends
方法,是call了基类的原型。
新闻热点
疑难解答