javascript - 从需要的文件扩展 Node.js 中的 Array.prototype

标签 javascript node.js require

我将以下内容保存在 test.js 中。它在浏览器中成功扩展了 Array,但它似乎不适用于 node 和 require。有人可以解释这里出了什么问题吗?

(function() {

Array.prototype.max = function() {
  return console.log("Array.prototype.max");
};
return Array.max = function() {
  return console.log("Array.max");
};

}).call(this);

然后,从终端:

> My-MacBook-Pro: me$ node
> var test = require("./test")
> [1,2,3].max()
TypeError: Object 1,2,3 has no method 'max'
    at [object Context]:1:9
    at Interface.<anonymous> (repl.js:171:22)
    at Interface.emit (events.js:64:17)
    at Interface._onLine (readline.js:153:10)
    at Interface._line (readline.js:408:8)
    at Interface._ttyWrite (readline.js:585:14)
    at ReadStream.<anonymous> (readline.js:73:12)
    at ReadStream.emit (events.js:81:20)
    at ReadStream._emitKey (tty_posix.js:307:10)
    at ReadStream.onData (tty_posix.js:70:12)
> Array.max()
TypeError: Object function Array() { [native code] } has no method 'max'
    at [object Context]:1:7
    at Interface.<anonymous> (repl.js:171:22)
    at Interface.emit (events.js:64:17)
    at Interface._onLine (readline.js:153:10)
    at Interface._line (readline.js:408:8)
    at Interface._ttyWrite (readline.js:585:14)
    at ReadStream.<anonymous> (readline.js:73:12)
    at ReadStream.emit (events.js:81:20)
    at ReadStream._emitKey (tty_posix.js:307:10)
    at ReadStream.onData (tty_posix.js:70:12)

最佳答案

您可以创建一个包含您的扩展的文件:

数组.extensions.js

if(!Array.prototype.Last){
    Array.prototype.Last = function(){
        return this.slice(-1)[0];
    }
}

if(!Array.prototype.First){
    Array.prototype.First = function(){
        return this[0];
    }
}

然后将此文件包含到您的启动文件中。

应用程序.js:

require('{path}/array.extensions');
var express = require('express');
/* rest of your code */

在启动时引用一次这个文件就足以使用...

关于javascript - 从需要的文件扩展 Node.js 中的 Array.prototype,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5739740/

相关文章:

javascript - 无需表单即可将查询数据发布到 URL 的方法?

javascript - Highcharts xRange 图表时间轴在缩放时不显示

javascript - 使用 jQuery 替换 li 标签内的文本

javascript - 模块导出中的 NodeJS 多个函数

ruby - Ruby 需要全有或全无吗?

Chrome 更新后 JavaScript 无法正常工作

node.js - 使用 knox 上传时在非对象上调用的 TypeError : Object. 键

javascript - Unicode 正则表达式\p{L} 在 NodeJS 中不起作用

node.js - 使用 babel-register `only` 选项

javascript - 使用sqlite3在node.js中变量的有效性