我遇到了NPM模块的对象属性问题。
我有这段代码:
var service = { //In my code this lane is: module.exports = { because is for a npm module so the client will call it using require();
username: 'test',
serviceFunction: function(){
console.log(this.username); //Prints service.username
},
serviceObject: {
getUsername: function () {
console.log(this.username); //THIS IS CAUSING THE FAIL, ITS UNDEFINED
}
}
}
如果service.username
位于this.username
,我可以serviceFunction
访问serviceObject.getUsername
。
我在{{1}}时怎么办?
答案 0 :(得分:1)
我不是Javascript专家,但似乎你有一个嵌套在另一个对象中的对象。你真正尝试的是得到父母的一个字段,所以你可能会认为“这个”肯定没有绑定到对象上。
看看这个有用的解决方案:Javascript objects: get parent
答案 1 :(得分:1)
正如@Enak所说,float x = 100.5;
float result = x - (int)x;
if (result != 0)
{
//If the value of `result` is not equal to zero, then, you have a decimal portion which is not equal to 0.
//If you want integer result
Integer yourAnswer1 = (Integer)result;
Float yourAnswer2 = (float)result;
}
内的this
是指getUsername
个实例。
如果getUsername
内console.log(this)
,您将获得getUsername
而不是
{ getUsername: [Function] }
使用:
console.log(this.username);
答案 2 :(得分:0)
您无法从父对象中检索子对象的信息。
一个选项是在父级中创建一个init函数,以在子级中设置相同的属性: -
var service = {
username: 'test',
serviceFunction: function() {
console.log(this.username);
},
serviceObject: {
getUsername: function() {
console.log(this.username);
}
},
init: function() {
this.serviceObject.username = this.username;
}
}
service.init()
service.serviceObject.getUsername(); // test
答案 3 :(得分:0)
这是undefined
,因为serviceObject.getUsername()
的呼叫网站明确绑定到serviceObject
,而username
没有serviceObject.getUsername.call(service)
属性。
您还可以使用以下语法:getUsername
将this
的{{1}}绑定到service
。
请记住,函数this
绑定仅由调用站点定义。无论您拨打getUsername()
,serviceObject.getUsername()
,serviceObject.getUsername.call(service)
,您基本上都会绑定不同的对象。