zoukankan      html  css  js  c++  java
  • javascript实现OOP编程

    1.首先通过一个函数来实现JS的单继承。使用原型方式来实现继承

     1 (function () {
     2 
     3     $.extend({
     4         oop: {
     5             extend: function (child, father) {
     6                 if (father == null) {
     7                     var father = function () { };
     8                     console.log(this);
     9                     father.prototype = this
    10                 }
    11                 child.prototype = new father();
    12 
    13                 child.base = father;
    14                 child.prototype.base = child.prototype;
    15             }
    16         }
    17 
    18     });
    19     window.oop = $.opp;
    20 })();
    View Code

    该方法向子类追加base实例属性及静态实例属性,以便找到父类。

    2.创建一个基类。

     1 (function () {
     2     oop.ui = function () {
     3         /**
     4         *渲染之前
     5         *基类不开启渲染。
     6         */
     7         this.renderBefor = function (self) {
     8             return false;
     9         }
    10         /*
    11         * 渲染函数
    12         */
    13         this.render = function () {
    14             if (this.renderBefor()==false) return;
    15             if (this.element) {
    16                 this.element.wrap("<span class='oop_ui'></span>");
    17             }
    18             this.redered();
    19         }
    20         this.redered = function (self) {
    21 
    22         }
    23     }
    24     oop.extend(oop.ui);
    25 })();
    View Code

    3.创建一个子类。

     1 (function () {
     2     oop.ui.select = function ($input) {
     3 
     4         this.element = $input
     5 
     6         this.renderBefor = function () {
     7             return true;
     8         }
     9         this.render = function () {
    10             /**
    11             *通过apply方法来调用基类的render方法。
    12             */
    13             this.base.render.apply(this,arguments);
    14             this.element.parent().addClass("oop-ui-select");
    15         }
    16     };
    17     oop.extend(oop.ui.select, oop.ui);
    18 
    19 })();
    View Code

    子类oop.ui.select的render 方法中。

    调用基类的方法是this.base.render.apply(this,arguments);

    apply是将base.render()方法中的this覆盖为当前子类的this(也就是指向oop.ui.select)。

  • 相关阅读:
    减治算法之寻找第K小元素问题
    OpenGL的版本号历史和发展
    动态注冊监听
    Thinking in Java -- 类型信息RTTI
    Unity3D
    Oracle改动字段类型
    函数定义
    foreach
    数组
    结构体
  • 原文地址:https://www.cnblogs.com/ruxia/p/4781624.html
Copyright © 2011-2022 走看看