js中prototype用法,js中prototype的作用
我们知道C#中有继承,也有类的扩展方法,但是JS世界中有类似的概念和函数实现吗?答案是肯定的。现在就让我来和大家说说这些知识吧!P
脚本类型=文本/javascript
//注意prototype只对这个脚本段有效。
//prototype prototype关键字,它扩展了JS原始对象的方法
array . prototype . max=function(){
var i,min=this[0];
for(I=1;我这.长度;i ) {
if (min this[i])
min=this[I];
}
返回最小值;
};
var myArray=new Array();
myArray[0]=1;
myArray[1]=3;
myArray[2]=2;
document . write(myarray . min());
/脚本
如您所见,我向数组添加了一个扩展方法,并找到了最小值min()。当我们构建一个数组对象时,它会有这个min方法,它的作用域只是当前的脚本代码段。
下面的示例将扩展方法添加到自定义方法中。参见代码:
脚本类型=文本/javascript
//自定义函数(类)
function selfFun(name) {
this.m _ Name=name
}
//为自定义类添加扩展方法。
self fun . prototype . hello=function(){
Document.write(你好!this . m _ Name);
};
Var self=new selfFun(张)//通过类的框架方法给类赋值。
自我。hello();
/脚本
但是上面两个实现都说明了prototype的扩展性,那么它的继承性是如何表现的呢?在实现上,上面的例子也从另一方面说明了它的继承性,即它继承了原对象的所有属性,然后派生出自己的新属性。接下来,我说一个更明显的例子。看看代码:
脚本类型=文本/javascript
//通过函数(类)的prototype属性继承另一个函数
函数A() {
这个。MethodA=function() {
document . write( MethodA );
}
}
函数B() {
这个。MethodB=function() {
document . write( method b );
}
}
b . prototype=new A();//TestObjectB继承TestObjectA类
var testObjectB=new B();
testObjectB。MethodA();
/脚本
这个例子足以说明问题了吧?B继承A,同时B可以使用A中的所有方法和属性!