gpt4 book ai didi

javascript - 在 JavaScript 中,let、require 和 prototype 如何协同工作来创建对象?

转载 作者:行者123 更新时间:2023-12-03 07:07:21 26 4
gpt4 key购买 nike

具体来说,我正在查看 Adblock JavaScript 代码库。其中几个部分:

1)那里有一行

let {Filter, RegExpFilter, WhitelistFilter} = require("filterClasses");

我知道 let 用于创建 block 范围变量,但是括号是做什么的?

2)代码再往下一点是:

function Matcher()
{
this.clear();
}
exports.Matcher = Matcher;

Matcher.prototype = {
filterByKeyword = null, //...variables
clear: function() {
//sample function, lots more
},
myfunc : function() {
return "blah blah";
}
}

module.exports 使其内部的函数和属性可用,但是 exports.Matcher = Matcher 是一样的吗?我想创建一个 Matcher 对象并使用其中的变量和函数。我尝试通过

模拟样式(在单独的js文件中)
let {Matcher} = require("matcher");
function testfunc() {
let matcher = new Matcher();
console.log(matcher.myfunc());
}

然后在终端中通过 node --harmony test.js 使用 Node 。

但它在 let {} block 处抛出 UnexpectedToken 错误。我不确定我是否正确创建了对象或到底发生了什么。关于如何开始解开这个谜题有什么想法吗?

最佳答案

第一行是所谓的 destructuring assignment可用于方便地将数据从对象提取到变量。

第二个 block 描述了一个公开 Matcher 类的模块。关于 module.exports/exports.xxx 的一篇非常好的文章是 this one .

根据 ES2015 规范,您的代码本身看起来非常完美。但是,在 Node.js 中使用 ES2015 功能时应该小心,并仔细阅读 docs :

  1. let 仅适用于 strict mode

  2. --harmony_destructuring 是一项正在进行的功能,因此您不应依赖它,因为它可能存在一些错误。我建议使用一些 ES2015 编译器,例如 Babel , TraceurTypescript如果您想使用 ES2015 功能

关于javascript - 在 JavaScript 中,let、require 和 prototype 如何协同工作来创建对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36760551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com