时间:2021-05-18
关于对象的继承,一般的做法是用复制法:Object.extend
见protpotype.js的实现方法:
复制代码 代码如下:Object.extend=function(destination,source){
for(propertyinsource){
destination[property]=source[property];
}
returndestination;
}
除此以外,还有一种不太常见的方法:Function.apply.
apply方法能劫持(<<AjaxinAction>>书中用到"劫持"一语,很生动啊)另外一个对象的方法,
继承另外一个对象的属性。
示范代码如下:
Apply示范代码
复制代码 代码如下:<script>
functionPerson(name,age){//定义一个类,人类
this.name=name//名字
this.age=age//年龄
this.sayhello=function(){alert("hello")}
}
functionPrint(){//显示类的属性
this.funcName="Print"
this.show=function(){
varmsg=[]
for(varkeyinthis){
if(typeof(this[key])!="function")msg.push([key,":",this[key]].join(""))
}
alert(msg.join("\n"))
}
}
functionStudent(name,age,grade,school){//学生类
Person.apply(this,arguments)
Print.apply(this,arguments)
this.grade=grade//年级
this.school=school//学校
}
varp1=newPerson("jake",10)
p1.sayhello()
vars1=newStudent("tom",13,6,"清华小学")
s1.show()
s1.sayhello()
alert(s1.funcName)
</script>学生类本来不具备任何方法,但是在Person.apply(this,arguments)后,他就具备了Person类的sayhello方法和
所有属性。在Print.apply(this,arguments)后就自动得到了show()方法。
本文,作为抛砖引玉,只对apply的用法(在对象继承和函数劫持方面)做个小示范,其他更深入的应用要
靠大家慢慢去领会了。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在Javascript中,Function是一种对象。Function对象中的this指向决定于函数被调用的方式。使用apply,call与bind均可以改变函
apply和call,它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数的方式有所区别:Function.prototype.apply(this
在Python中,函数本身也是对象,所以可以将函数作为参数传入另一函数并进行调用在旧版本中,可以使用apply(function,*args,**kwargs)
前端开发者应该很清楚Javscript脚本的function函数对象可以通过call或apply方法,使其改变内部作用域(this)所指向的对象,实现更多可扩展
现有某函数与对象如下:复制代码代码如下:vardoubling=function(x){returnx*2;};varobj={val:100,};函数调用模式