Скажем, что у меня есть этот код:
module.exports = {
head: {
title: "Some title"
}
}
Могу ли я получить доступ к этому головному объекту внутри module.export, т.е.
module.exports = {
head: {
title: "Some title"
},
test: function() {
return this.head.title
}
}
спасибо за помощью.
Вы можете использовать Bind вне функции для поддержания ссылки.
var module = {};
module.exports = {
head: {
title: "Some title"
},
test: function() {
return this.head.title
}
}
var title = module.exports.test.bind(module.exports);
console.log(title());
или вы можете использовать применение внутри функции для поддержания ссылки.
var module = {};
module.exports = {
head: {
title: "Some title"
},
test: function() {
return hit.apply(module.exports.head)
function hit() {
return this.title;
}
}
}
console.log(module.exports.test());
И если вы хотите изменить название, вы можете использовать класс.
var module = {};
class Update {
constructor(a, b) {
this.module = a;
this.string = b;
}
get titles() {
return this.module.exports = {
head: {
title: this.string || "I'm sooo defualt"
},
test: function() {
return hit.apply(module.exports.head)
function hit() {
return this.title;
}
}
}
}
}
const newString = new Update(module, 'no way brah');
const allTheWay = new Update(module, 'all the way brah');
console.log(newString.titles.test());
console.log(allTheWay.titles.test());
const defaults = new Update(module);
console.log(defaults.titles.test());
console.log('I am with the last guy,', module.exports.test());
И если у вас нет класса.
var module = {};
module.exports = {
head: {
title: "Some title"
},
test: function() {
return hit.apply(module.exports.head)
function hit() {
return this.title;
}
}
}
module.exports.head.title= 'hello world';
console.log(module.exports.test());
test
всегда вызывается как метод модуля