1

我正在使用Node.JSExpressJS。以下代码用于使用我自己的消息扩展 Errors 对象并且运行良好,但我知道这__proto__是非标准的。

如果没有 ? ,我将如何重写以下代码__proto__

var AccessDenied = exports.AccessDenied = function(message) {
    this.name = 'AccessDenied';
    this.message = message;
    Error.call(this, message);
    Error.captureStackTrace(this, arguments.callee);
};
AccessDenied.prototype.__proto__ = Error.prototype;  
4

3 回答 3

2

用于Object.create()创建新的原型对象,并添加一个不可枚举的construtor属性。

AccessDenied.prototype = Object.create(Error.prototype, {
    constructor: {
        value: AccessDenied,
        writeable: true,
        configurable: true,
        enumerable: false
    }
});  

或者,如果您不关心该constructor属性:

AccessDenied.prototype = Object.create(Error.prototype); 
于 2012-11-26T00:08:52.793 回答
2
"use strict";

/**
 * Module dependencies.
*/
var sys = require("sys");

var CustomException = function() {
    Error.call(this, arguments);    
};
sys.inherits(CustomException, Error);

exports = module.exports = CustomException;
于 2012-11-26T09:01:52.650 回答
1
var AccessDenied = exports.AccessDenied = function ( message ) { /*...*/ };
var F = function ( ) { };
F.prototype = Error.prototype;
AccessDenied.prototype = new F();
于 2012-11-26T00:08:44.643 回答