尝试在同一对象上使用另一种方法时,我一直无法获得X
的功能。测试代码如下:
对象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
上的一个函数,但在同一对象的另一个方法中调用时则不是。
我以为我了解如何使用模块/需求/原型,但是显然,我不知道-我正在拔头发试图找出我做错了什么?任何帮助将不胜感激。
答案 0 :(得分:1)
当创建对象的实例时,原型副本的所有属性随后将复制到该对象。如果要在创建对象实例之前进行访问,则可以使用prototype
或this
。
尝试一下:
Mod2OBJ.prototype.second = function second () {
Mod2OBJ.prototype.deferred()
console.log('second')
}
已编辑======= 第二种方式:
Mod2OBJ.prototype.second = function second () {
this.deferred()
console.log('second')
}