js模块之间如何继承和调用?

发布于 2022-08-29 23:26:47 字数 821 浏览 34 评论 0

例如有
a.js

define(['jquery'],functions($){
    function A(options){
        this.options = options;
        this.init();
    }

    A.prototype.getData = function(){
        //do something
    };

    A.prototype.init = function(){
        var self = this;
        $(function(){
            self.getData();
        });
    };

    return A;
});

b.js

define(['jquery'],functions($){
    function B(options){
        this.options = options;
        this.init();
    }

    B.prototype.getData = function(){
        //do something
    };

    B.prototype.init = function(){
        var self = this;
        $(function(){
           self.getData();
        });
   };

   return B;
});

B如何继承A,调用A里面的方法和值?
还是说用依赖就可以了,那依赖的话要怎么写?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

不忘初心 2022-09-05 23:26:48

继承的部分和普通的JS实现继承的方法没有太大差别,你可以参考下面的实现方式,另外,如果用方式这种继承的话,init方法的调用位置是值得商榷的。

b.js:

define(['jquery', 'a'], function ($, A) {
  function B(options) {
    this.options = options;
  }

  //继承A
  B.prototype = new A();
  B.prototype.constructor = B;
  //保存父类的引用
  B.prototype.parent = A.prototype;

  //复写A中的方法
  B.prototype.getData = function () {
    //do something
  };

  B.prototype.init = function () {
    //如果需要的话,可以调用父类的方法
    this.parent.init.call(this);
    console.log('inited');
  };

  return B;
});

参考

Inheritance

神仙妹妹 2022-09-05 23:26:48

继承和调用依然用js的方式去做
我只会coffee 大概写成这个样子

a.coffee

define [],()->
    class A
        constructor: () ->
            @init=()->
                @getData()
            @init()

        getData:()->
            console.log "I am A"

b.coffee

define ['a'],(A)->
    class B extends A
        constructor: () ->
            @init=()->
                console.log "I am B"
            @init()

        getData:()->
            super

index.coffee

require [
    'b'
],(B)->
    # class B的构造函数 输出 `I am B`
    b=new B()
    # b调用父类的 getData() 输出 `I am A `
    b.getData()
寄与心 2022-09-05 23:26:48

js的继承是使用 原理是使用原型链进行继承(prototype)说明

而模块化的原理是使用闭包进行访问权限控制,暴露出接口,当然现在有很多封装好的模块化类库,比如seajs,modjs,requirejs等等

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文