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中的所有方法和属性!

本文转自博客园张占岭(仓储大叔)的博客,原文链接:JS里的prototype对JS类(方法,函数,function)进行一个扩展吧!,如需转载请自行联系原博主。

目录
相关文章
|
29天前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
27天前
|
监控 JavaScript Java
Node.js中内存泄漏的检测方法
检测内存泄漏需要综合运用多种方法,并结合实际的应用场景和代码特点进行分析。及时发现和解决内存泄漏问题,可以提高应用的稳定性和性能,避免潜在的风险和故障。同时,不断学习和掌握内存管理的知识,也是有效预防内存泄漏的重要途径。
122 52
|
1月前
|
JavaScript 前端开发 索引
js中DOM的基础方法
【10月更文挑战第31天】这些DOM基础方法是操作网页文档结构和实现交互效果的重要工具,通过它们可以动态地改变页面的内容、样式和行为,为用户提供丰富的交互体验。
|
1月前
|
缓存 JavaScript UED
js中BOM中的方法
【10月更文挑战第31天】
|
28天前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
41 5
|
29天前
|
JavaScript 前端开发
js中的bind,call,apply方法的区别以及用法
JavaScript中,`bind`、`call`和`apply`均可改变函数的`this`指向并传递参数。其中,`bind`返回一个新函数,不立即执行;`call`和`apply`则立即执行,且`apply`的参数以数组形式传递。三者在改变`this`指向及传参上功能相似,但在执行时机和参数传递方式上有所区别。
26 1
|
1月前
|
JavaScript 前端开发
.js方法参数argument
【10月更文挑战第26天】`arguments` 对象为JavaScript函数提供了一种灵活处理参数的方式,能够满足各种不同的参数传递和处理需求,在实际开发中具有广泛的应用价值。
39 7
|
1月前
|
前端开发 JavaScript 开发者
除了 Generator 函数,还有哪些 JavaScript 异步编程解决方案?
【10月更文挑战第30天】开发者可以根据具体的项目情况选择合适的方式来处理异步操作,以实现高效、可读和易于维护的代码。
|
29天前
|
中间件 Docker Python
【Azure Function】FTP上传了Python Function文件后,无法在门户页面加载函数的问题
通过FTP上传Python Function至Azure云后,出现函数列表无法加载的问题。经排查,发现是由于`requirements.txt`中的依赖包未被正确安装。解决方法为:在本地安装依赖包到`.python_packages/lib/site-packages`目录,再将该目录内容上传至云上的`wwwroot`目录,并重启应用。最终成功加载函数列表。
|
2月前
|
JavaScript
箭头函数与普通函数(function)的区别
箭头函数是ES6引入的新特性,与传统函数相比,它有更简洁的语法,且没有自己的this、arguments、super或new.target绑定,而是继承自外层作用域。箭头函数不适用于构造函数,不能使用new关键字调用。

热门文章

最新文章

下一篇
DataWorks