JS里的prototype对JS类(方法,函数,function)进行一个扩展吧!
我们知道C#里有继承,类也有扩展方法,而在JS世界有是否也有相似的概念和功能实现呢,答案是肯定的,现在我来和大家一起聊聊这方面的知识吧!:P
<script type="text/javascript">
// 注意,prototype只对本script段起作用
// prototype原型关键字,为一个JS原对象扩展一个方法
Array.prototype.max = function() {
var i, min = this[0];
for (i = 1; i < this.length; i++) {
if (min > this[i])
min = this[i];
}
return min;
};
var myArray = new Array();
myArray[0] = 1;
myArray[1] = 3;
myArray[2] = 2;
document.write(myArray.min());
</script>
各位可以看到,我为一个数组加了一个扩展方法,求最小值 min(),当我们建立一个Array对象后,它将具有这个min方法,当然它的作用域只是当前的<script>代码段.
下面的实例是对自定义的方法加了一个扩展方法,看代码:
<script type="text/javascript">
//自定义的函数(类)
function selfFun(name) {
this.m_Name = name;
}
// 为自定义类添加一个扩展一个方法
selfFun.prototype.Hello = function() {
document.write("你好!" + this.m_Name);
};
var self = new selfFun("张占岭")//为类通过它的构架方法赋值
self.Hello();
</script>
然而上面两个实现都说明了prototype的扩展性,那它的继承性如何去表现呢,实现上,上面的例子从另一方面也说明了它的继承性,即它是继承了原有对象的所有属性后又派生出自己新的属性而以,接下来,我说一个比较明显的例子吧,看代码:
<script type="text/javascript">
//通过函数(类)的prototype属性来继承另一个函数
function A() {
this.MethodA = function() {
document.write("MethodA");
}
}
function B() {
this.MethodB = function() {
document.write("MethodB");
}
}
B.prototype = new A(); //TestObjectB继承了TestObjectA类
var testObjectB = new B();
testObjectB.MethodA();
</script>
这个例子已经足够可以说明问题了吧,B继承了A,同时,B可以使用A中的所有方法和属性!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示