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
"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 に答える
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 に答える
1
var AccessDenied = exports.AccessDenied = function ( message ) { /*...*/ };
var F = function ( ) { };
F.prototype = Error.prototype;
AccessDenied.prototype = new F();
于 2012-11-26T00:08:44.643 に答える