zoukankan      html  css  js  c++  java
  • 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中的所有方法和属性!

  • 相关阅读:
    JavaScript面向对象基础语法总结
    json对象
    关于JavaScript语法的小笔记
    关于JavaScript的小笔记
    html中的a标签的target属性的四个值的区别?
    详解Bootstrap 定义按钮的样式(CSS)
    (负)-margin在页面布局中的应用
    lorem ipsum text占位符
    jQuery动态添加元素事件
    实用|从0到1 搭建Web性能监控系统
  • 原文地址:https://www.cnblogs.com/lori/p/2071215.html
Copyright © 2011-2022 走看看