我将如何重写没有__proto__
我正在使用Node.JS和ExpressJS 。 下面的代码用于扩展错误对象与我自己的消息,工作得很好,但我明白, __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;
使用Object.create()
来创build新的原型对象,并添加一个不可枚举的construtor
属性。
AccessDenied.prototype = Object.create(Error.prototype, { constructor: { value: AccessDenied, writeable: true, configurable: true, enumerable: false } });
或者,如果你不关心constructor
属性:
AccessDenied.prototype = Object.create(Error.prototype);
"use strict"; /** * Module dependencies. */ var sys = require("sys"); var CustomException = function() { Error.call(this, arguments); }; sys.inherits(CustomException, Error); exports = module.exports = CustomException;
var AccessDenied = exports.AccessDenied = function ( message ) { /*...*/ }; var F = function ( ) { }; F.prototype = Error.prototype; AccessDenied.prototype = new F();