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

  • 相关阅读:
    JS 页面截屏,转为图片
    php js 交互(js调用PHP代码执行)
    微信开发,自定义菜单不生效怎么办?重新关注也无效
    ios 带scrollView的控制器,双击“状态栏”,返回scrollView的顶部
    iOS 文件共享 ,通过手机助手/mac 访问APP沙盒
    cell 各自的高度不同的时候
    释放控制器。控制器的生命周期,有 定时器的 控制器
    TmpCode
    ios uploader 上传IPA到itunes
    UIImageView的image的图片显示 imageView.contentMode
  • 原文地址:https://www.cnblogs.com/lori/p/2071215.html
Copyright © 2011-2022 走看看