作为一个长期的经典继承OO程序员,我非常习惯使用构造函数并创建接受所需参数作为构造函数参数的对象.例如,发送与订单相关的警报的对象可能如下所示:
var orderNotifier = function(orderId, notifier, recipients)
{
this.notifyApproved = function()
{
// use the notifier object passed as ctor param to send notifications
// related to orderId to recipients
}
this.notifySomeOtherEvent = function() { // use the ctor params again }
}
// then use it like
var on = new orderNotifier(12345, new BasicNotifier(), someArrayOfEmails);
on.notifyApproved();
Run Code Online (Sandbox Code Playgroud)
这是一个人为的例子,但举例说明了(恕我直言)参数化构造函数的价值.特别:
认识到JavaScript中的构造函数创建模式不能很好地支持信息隐藏,我被立即调用函数表达式(IIFE)模式所吸引,其闭包和更强的访问控制.现在我遇到了这样一个事实:我不能使用IIFE模式传递对象构造参数,或者至少我不明白我是怎么做的.
我知道你可以将参数传递给匿名函数,如下所示:
(function(param){})(someVar);
Run Code Online (Sandbox Code Playgroud)
但这与显式创建新对象并将参数传递给构造函数不同.根据IIFE模式的本质,我不一定要将数据传递给对象.
我上面的IIFE版本就像:
var orderNotifier = (function()
{
var privateHelperMethod = function() { return 'blahblahblah'; …Run Code Online (Sandbox Code Playgroud) 在回购的大部分时间里,我们看到PR,然后是PR的合并提交,它只是说"Merged pull request #XXX from ...".
但是最近,我看到了一个压缩版本,其中pull请求者和提交者的头像重叠,并且历史记录中只显示了一个干净的提交:

如何才能做到这一点?
我尝试过但不起作用:
UPDATE
当我的一个PR以这种方式合并时的样子:

结果是:

我知道如何从Meteor包中获取当前目录,但是如何获取项目中特定文件的路径?
节点__dirname,__filename并不在Meteor中工作.
Webix与Font Awesome集成.但是如何使用Font Awesome图标代替树中的默认文件夹/文件图标来设置单个节点的样式?
这是我尝试过的:
http://webix.com/snippet/52251623
template 仅适用于树级$css 保留现有的文件夹/文件图标icon记录树木财产,但设置一个做一些事情......它改变了文件夹图标为一个文件,当节点有孩子.我想知道三重花括号是否可以清除模板中的用户输入以保证XSS安全.<script>标签不会渲染,但其他令人毛骨悚然的XSS黑客呢?
提前致谢!
我编写了一个Chrome扩展程序,它覆盖了新标签页:
manifest.json:
"chrome_url_overrides": {
"newtab": "new-tab.html"
},
Run Code Online (Sandbox Code Playgroud)
有没有办法使这个覆盖可选?也就是说,我想让用户取消选中选项页面中的复选框并禁用新标签覆盖.这一定是可能的,因为当我第一次打开新标签时,会弹出一个通知,指示扩展程序更改"新建标签"设置并询问是保留更改还是恢复设置:

我找不到任何用于控制覆盖的API." 新建选项卡重定向"项目没有显示本机"新建选项卡"的选项.
我已经阅读了https://github.com/ampproject/amphtml/blob/master/docs/create_page.md关于CSS的用法,但我不确定格式允许的CSS选择器.选择器/属性是否有任何限制?
样式声明可以放在任何地方<html>或仅放在<head>?
是否可以包含任何外部样式表?
GraphQL 中一个非常常见的用例是创建一个带有突变的对象,并接收完全相同的字段、数据库返回的加号和 ID。这是一个相关的问题,询问这个。
我的问题是,如何简化这种模式以避免重复字段?我试过将输入类型重用为片段,
input ClientInput {
short_name: String
full_name: String
address: String
email: String
location: String
}
type Client {
id: String
...ClientInput
}
Run Code Online (Sandbox Code Playgroud)
...但失败了
语法错误:预期名称,找到...
我在 Fragments 上看到的所有文档和博客文章总是将它们创建on为现有类型。这意味着仍然重复除 ID 字段之外的所有内容:
type Client {
_id: String
short_name: String
full_name: String
address: String
email: String
location: String
}
fragment ClientFields on Client {
short_name: String
full_name: String
address: String
email: String
location: String
}
input ClientInput {
...ClientFields
}
Run Code Online (Sandbox Code Playgroud)
怎么样更好?
1在 MongoDB shell 中,我可以使用类型强制插入一个整数值NumberInt(1)。
如何从使用mongodb 模块的客户端 JavaScript 中执行此操作?
在 JavaScript 中,出于调试目的,输出一组字符串的所有元素的最短代码是什么?字符串是在一行上还是在单独的行上都没有关系。
const set = new Set();
set.add('dog');
set.add('cat');
console.log(???);Run Code Online (Sandbox Code Playgroud)