小编obi*_*bie的帖子

Prototypical Inheritance调用构造函数两次

我正在开发一个使用Prototypical Inheritance的JavaScript项目.我决定使用它的方式如下:

var MySuperClass = function (param) {
    this.prop = param;
};
MySuperClass.prototype.myFunc = function () {
    console.log(this.prop);
};

var MySubClass = function (param) {
    MySuperClass.call(this, param);
};
MySubClass.prototype = new MySuperClass();
MySubClass.prototype.constructor = MySubClass;

var obj = new MySubClass('value');
obj.myFunc();
Run Code Online (Sandbox Code Playgroud)

重点是继承.

这个问题是,如果我在每个类(超级和子类)的构造函数中放置一个console.log,那么超级类被调用两次,一次被传递到MySubClass.prototype = new MySuperClass();没有任何参数的子类,一次带参数当它是子类的构造函数中的"构造函数被盗"时.

如果我然后尝试保存这些参数(这意味着我必须添加逻辑来处理空参数),这可能会导致错误.

现在,如果我这样做:

var MySubClass = function (param) {
    MySuperClass.call(this, param);
};
MySubClass.prototype = MySuperClass;
MySubClass.prototype.constructor = MySubClass;
Run Code Online (Sandbox Code Playgroud)

一切似乎都正常,但我以前从未见过有人这样做过(在我的Googl'ing中).

任何人都可以向我解释第二个是否以及如何不正确(它似乎与Crockford继承功能相似)以及如果它取悦,如何修复第一个不发射两次?

javascript inheritance prototypal-inheritance

6
推荐指数
1
解决办法
826
查看次数

使用死信队列处理 AWS Lambda 错误

我尝试遵循有关在 AWS 上为我的 Lambda 设置 SQS 死信队列的文档,但我似乎无法将错误传递给它。

我有一个 Lambdaeu-west-2

exports.handler = async (event) => {
    if (event.desire === 'error') {
        throw new Error('dutifully throw an error');
    }
    
    const response = {
        statusCode: 200,
        body: JSON.stringify('Complete the lambda!'),
    };
    return response;
};
Run Code Online (Sandbox Code Playgroud)

将异步调用设置为我的 sqs 队列test-dlq

异步调用设置

我在角色中添加了以下内容:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Action": "sqs:*",
            "Resource": "arn:aws:sqs:eu-west-2:123456789:test-dlq"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

(我之前已经这样设置过,"Action": "sqs:SendMessage"但为了简洁起见,我让它更加宽松)

我已经设置了 SQS 队列来接收消息:

在此输入图像描述

我的测试用例有效负载是:

{
    "desire": "error"
}
Run Code Online (Sandbox Code Playgroud)

这会导致 lambda 出错并将错误添加到 CloudWatch …

amazon-sqs amazon-web-services aws-lambda

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