首页 > 解决方案 > 访问未定义的原型方法或函数

问题描述

我正在学习使用原型,但在导出和在其他文件中使用它时遇到了一些问题。要求部分有效,但我无法访问我的 data.js 中的属性或方法。

如果我想使用myFunction我正在获取myFunction is not a function和属性undefined

我也不明白为什么function(){};而不是 let Data = {};工作......

// data.js
let Data = function(){}; 

Data.prototype.integers = [0,1,3,2,8,4,11,22,74,98,111,5];

Data.prototype.myFunction= function (text){
  return text
}
module.exports.Data  = Data;


// main.js
let Numbers = require ("./data.js");
console.log(Numbers.myFunction("some text"), Numbers.integers ); // myFunction is not a function

标签: javascriptprototype

解决方案


这是因为您将成员添加到Data.prototype.

更改module.exports.Data = Datamodule.exports.Data = new Data()

一些建议

除非你想用面向对象的编程来做东西,否则我会重构你的代码如下:

// data.js
module.exports.Data = {
   integers: [0,1,3,2,8,4,11,22,74,98,111,5],

   myFunction: function (text){
        return text
   }
}

所以你的代码main.js也可以工作。


推荐阅读