如何让、要求和原型协同工作以在 javascript 中制作对象
How do let, require, and prototype work together to make objects in javascript?
具体来说,我正在查看Adblock javascript代码库。这有几个部分:
1)里面有一条线
let {Filter, RegExpFilter, WhitelistFilter} = require("filterClasses");
我知道let
用于创建块范围的变量,但是括号在做什么?
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
.
但它会在let {}
块上抛出UnexpectedToken
错误。我不确定我是否正确创建了对象或到底发生了什么。关于如何开始解开这个难题的任何想法?
第一行是所谓的解构赋值,可用于方便地将数据从对象提取到变量。
第二个块描述一个公开类Matcher
的模块。一篇关于module.exports
/exports.xxx
的非常好的文章就是这篇文章。
根据 ES2015 规范,您的代码本身看起来非常好。但是,在node中使用ES2015功能时应小心.js并仔细阅读文档:
-
let
仅在严格模式下工作 -
--harmony_destructuring
是一项正在进行的功能,因此您不应依赖它,因为它可能存在一些错误。如果你想利用ES2015的功能,我建议使用一些ES2015编译器,如Babel,Traceur或Typescript。
第一个是解构赋值。在第二个实例中,exports.Matcher
简单地定义模块导出给使用者的对象。
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 循环遍历以数组为值的Javascript对象
- 从ajax请求中获取javascript对象
- 如何从对象的原型方法访问JavaScript对象属性
- 将XML转换为普通的旧JavaScript对象
- 通过引用传递JavaScript对象
- javascript对象操作:根据指定条件选择属性
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 如何在异步函数中使用javascript对象
- 临时Javascript对象
- 如何在ASP中为用户控件添加Javascript对象网
- 使用数组向下搜索Javascript对象
- Rails将JavaScript对象存储到Model的有效方式
- JavaScript对象不是从原型链继承的
- 如何创建具有默认值的JavaScript对象字段?(AngularJS模型相关)
- SetInterval在javascript对象中表现怪异
- Javascript 对象和 this 关键字
- 如何在不知道关键字的情况下访问javascript对象值
- 在 JavaScript 对象中设置要使用的运算符的属性
- 如何搜索JavaScript对象并更改值