NodeJS 从另一个调用原型
NodeJS calling prototype from another
尝试对同一对象使用另一种方法时,我不断收到 X
is not a function。测试代码如下:
对象 1 :
"use strict"
let Mod1OBJ = function () {}
Mod1OBJ.prototype.first = function first () {
console.log('first')
}
exports.Mod1OBJ = new Mod1OBJ()
对象 2 :
"use strict"
const { Mod1OBJ } = require(`./mod1.js`)
let Mod2OBJ = function () {}
Mod2OBJ.prototype.second = function second () {
Mod2OBJ.deferred()
console.log('second')
}
Mod2OBJ.prototype.deferred = function deferred () {
Mod1OBJ.first()
console.log('deferred')
}
exports.Mod2OBJ = new Mod2OBJ()
Index.js:
"use strict"
const { Mod2OBJ } = require(`./lib/pack1/mod2.js`)
Mod2OBJ.deferred()
Mod2OBJ.second()
执行时:
first
deferred
/path to file/mod2.js:8
Mod2OBJ.deferred()
^
TypeError: Mod2OBJ.deferred is not a function
显然 'deferred' 是 Mod2OBJ
上的函数,但在同一对象的另一个方法中调用时不是。
我以为我了解如何使用 modules/require/prototyping 但很明显,我不知道 - 我正在努力找出我做错了什么?非常感谢任何帮助。
当您创建一个对象的实例时,原型的所有属性都会复制到该对象。如果要在创建对象实例之前访问,可以使用 prototype
或 this
.
试试这个:
Mod2OBJ.prototype.second = function second () {
Mod2OBJ.prototype.deferred()
console.log('second')
}
已编辑 =======
第二种方式:
Mod2OBJ.prototype.second = function second () {
this.deferred()
console.log('second')
}
尝试对同一对象使用另一种方法时,我不断收到 X
is not a function。测试代码如下:
对象 1 :
"use strict"
let Mod1OBJ = function () {}
Mod1OBJ.prototype.first = function first () {
console.log('first')
}
exports.Mod1OBJ = new Mod1OBJ()
对象 2 :
"use strict"
const { Mod1OBJ } = require(`./mod1.js`)
let Mod2OBJ = function () {}
Mod2OBJ.prototype.second = function second () {
Mod2OBJ.deferred()
console.log('second')
}
Mod2OBJ.prototype.deferred = function deferred () {
Mod1OBJ.first()
console.log('deferred')
}
exports.Mod2OBJ = new Mod2OBJ()
Index.js:
"use strict"
const { Mod2OBJ } = require(`./lib/pack1/mod2.js`)
Mod2OBJ.deferred()
Mod2OBJ.second()
执行时:
first
deferred
/path to file/mod2.js:8
Mod2OBJ.deferred()
^
TypeError: Mod2OBJ.deferred is not a function
显然 'deferred' 是 Mod2OBJ
上的函数,但在同一对象的另一个方法中调用时不是。
我以为我了解如何使用 modules/require/prototyping 但很明显,我不知道 - 我正在努力找出我做错了什么?非常感谢任何帮助。
当您创建一个对象的实例时,原型的所有属性都会复制到该对象。如果要在创建对象实例之前访问,可以使用 prototype
或 this
.
试试这个:
Mod2OBJ.prototype.second = function second () {
Mod2OBJ.prototype.deferred()
console.log('second')
}
已编辑 ======= 第二种方式:
Mod2OBJ.prototype.second = function second () {
this.deferred()
console.log('second')
}