小编med*_*med的帖子

javascript原型继承

这似乎不一致,但可能是因为我是javascript原型继承功能的新手.

基本上,我有两个基类属性,"列表"和"名称".我实例化两个子类并为属性赋值.当我实例化第二个子类时,它从第一个子类实例获取列表值,但仅用于"列表"而不用于"名称".这是怎么回事??当然,我希望任何后续的子类实例都不会从其他实例获取值,但如果这种情况发生,它应该是一致的!

这是一段代码:

    function A()
    {
        this.list = [];
        this.name = "A";
    }
    function B()
    {
    }
    B.prototype = new A();

    var obj1 = new B();
    obj1.list.push("From obj1");
    obj1.name = "obj1";

    var obj2 = new B();

    //output:
    //Obj2 list has 1 items and name is A
    //so, the name property of A did not get replicated, but the list did
    alert("Obj2 list has " + obj2.list.length + " items and name is "+ obj2.name);    
Run Code Online (Sandbox Code Playgroud)

javascript inheritance prototype

16
推荐指数
2
解决办法
2694
查看次数

处理 es6 模块中的依赖关系,适用于节点和浏览器

我编写了一个 JavaScript 库作为 ES6 模块,主要用于浏览器。现在我想将它打包为节点。我同意限制为节点 v 14+。我不想转译。

我不确定如何处理依赖关系。其中一个特别是 moment-js,给我带来了麻烦。

在浏览器中(尝试了最新的 FF + Chrome),我在标签中引用了 moment 库<script>,然后在我的代码中,我可以只使用变量moment,而不必先导入它。

my-module.js

function testFn() {
  return moment.duration(300).asSeconds();
}

export { testFn }
Run Code Online (Sandbox Code Playgroud)

browser code

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.26.0/moment.min.js"></script>
<script type="module" src="my-module.js"></script>
<script>

import { testFn } from 'my-module.js';
let val = testFn();
console.log(val); 

</script>
Run Code Online (Sandbox Code Playgroud)

但是,在节点中,我需要模块包含一个import才能使其工作:

my-module.js

import moment from 'moment';

function testFn() {
  return moment.duration(300).asSeconds();
}

export { testFn }
Run Code Online (Sandbox Code Playgroud)

my-module然后我可以在节点中使用:

import { testFn } from 'my-module.js';

let …
Run Code Online (Sandbox Code Playgroud)

javascript browser node.js node-modules ecmascript-6

5
推荐指数
1
解决办法
1469
查看次数