Javascript 从同一对象内的函数访问对象属性
我在这里尝试的是从同一对象中的Javascript 从同一对象内的函数访问对象属性,javascript,oop,node.js,express,Javascript,Oop,Node.js,Express,我在这里尝试的是从同一对象中的ready函数中访问context属性(或者更具体地说是context.settings)。我不确定这样做的正确语法是什么 代码如下: module.exports = { context: { settings: require('./settings') }, listen: function(callback) { listen(context.settings.http.port); callb
ready
函数中访问context
属性(或者更具体地说是context.settings
)。我不确定这样做的正确语法是什么
代码如下:
module.exports = {
context: {
settings: require('./settings')
},
listen: function(callback) {
listen(context.settings.http.port);
callback(null);
},
ready: function (err) {
if (err)
{
throw err;
}
console.log("Ready and listening at http://localhost:" + context.settings.http.port);
}
};
为了澄清,我指的是行console.log(“准备好并在http://localhost:“+context.settings.http.port)代码>
编辑:多一点上下文(ha)
我确实尝试了这个.context.settings.http.port
,但是我得到了
TypeError:无法读取未定义的属性“设置”
以下是settings.js
的内容,只是为了确保
module.exports = {
db: {
host: '127.0.0.1',
port: 27017,
name: 'jsblogdemo'
},
http: {
port: 3000
}
};
谢谢 只要方法没有被调用
或应用
绑定到另一个上下文,此
引用当前对象上下文。例如,使用:
console.log(this.context.settings.http.port);
打印侦听端口。只要一个方法没有通过调用
或应用
绑定到另一个上下文,此
引用当前对象上下文。例如,使用:
console.log(this.context.settings.http.port);
要打印侦听端口。如果是单个静态对象,您可以执行以下操作:
module.exports.context.settings
如果要永久绑定此
,请使用.bind()
如果是单个静态对象,您可以执行以下操作:
module.exports.context.settings
如果要永久绑定此,请使用.bind()
另一种可能性是:
module.exports = (function() {
var context = {
settings: require('./settings')
},
listen = function(callback) {
listen(context.settings.http.port);
callback(null);
},
ready = function (err) {
if (err)
{
throw err;
}
console.log("Ready and listening at http://localhost:" +
context.settings.http.port);
};
return {
// context: context, // needed?
listen: listen,
ready: ready
};
}());
然后这些函数就可以本地访问
上下文
对象,而不必担心如何调用它们。如果您愿意,上下文
对象可以完全私有。另一种可能性是:
module.exports = (function() {
var context = {
settings: require('./settings')
},
listen = function(callback) {
listen(context.settings.http.port);
callback(null);
},
ready = function (err) {
if (err)
{
throw err;
}
console.log("Ready and listening at http://localhost:" +
context.settings.http.port);
};
return {
// context: context, // needed?
listen: listen,
ready: ready
};
}());
然后这些函数就可以本地访问
上下文
对象,而不必担心如何调用它们。如果您愿意,context
对象可以保持完全私有。在主postworks中添加了更多的上下文,当它们像您在第二个示例中那样单独定义时,就很好了-谢谢!当它们像第二个例子中那样被单独定义时,可以为主要的博文添加更多的上下文-谢谢!完美,正是我想做的。完美,正是我想做的。