JavaScript:无法访问对象属性
我在访问简单对象的属性时遇到问题 这是我运行JavaScript:无法访问对象属性,javascript,object,backbone.js,properties,handlebars.js,Javascript,Object,Backbone.js,Properties,Handlebars.js,我在访问简单对象的属性时遇到问题 这是我运行警报(JSON.stringify(user))时得到的结果: 但这是我运行警报(user.username)时得到的结果: 我还尝试了user[“username”],得到了相同的结果。这是在使用手柄的主干应用程序的上下文中。以下是主干部分: var User = Backbone.Model.extend({ urlRoot: 'http://api.example.com/user', }); var Router = Backbone.R
警报(JSON.stringify(user))
时得到的结果:
但这是我运行警报(user.username)
时得到的结果:
我还尝试了user[“username”]
,得到了相同的结果。这是在使用手柄的主干应用程序的上下文中。以下是主干部分:
var User = Backbone.Model.extend({
urlRoot: 'http://api.example.com/user',
});
var Router = Backbone.Router.extend({
routes: {
":username": "profile"
},
profile: function (username) {
var user = new User({id: username});
user.fetch({
beforeSend: authenticate,
success: function() {
var profile = new Profile({user: user});
profile.render();
}
});
}
});
var Profile = Backbone.View.extend({
render: function() {
var source = $("#profile").html();
var template = Handlebars.compile(source);
user = this.options.user;
var html = template(user);
$("#content section").html(html);
}
});
是什么原因导致了这样的问题?这对我很有效
var user = {"username": "david", "biography": "Hello world."};
alert (user.username);
alert (user["username"]);
这对我有用
var user = {"username": "david", "biography": "Hello world."};
alert (user.username);
alert (user["username"]);
如果您的用户对象是主干模型,请尝试以下操作
console.log(user.get('username'));
or
cosole.log(user.attributes.username);
如果您的用户对象是主干模型,请尝试以下操作
console.log(user.get('username'));
or
cosole.log(user.attributes.username);
stringify将查找一个toJSON函数,并使用该函数的返回值作为它使用的JSON 主干可能会进行一些奇特的编码,以使其模型对象更易于使用。因为他们认为您不需要他们放入的所有垃圾,所以他们为您提供了一个干净的toJSON()结果
@Rayweb_on有剩余的答案。JSON.stringify将查找一个toJSON函数,并使用该函数的返回值作为它使用的JSON 主干可能会进行一些奇特的编码,以使其模型对象更易于使用。因为他们认为您不需要他们放入的所有垃圾,所以他们为您提供了一个干净的toJSON()结果
@Rayweb_on给出了剩下的答案。您如何定义用户?你确定它是对象而不是字符串吗?它是主干模型吗?我这样问是因为你在你的问题中添加了主干标记。是的,我帖子中的代码在一个视图中,
user
对象被传递到该视图中。我运行了警报(用户类型)
,它返回对象
。我将为问题添加更多上下文。请尝试user.toJSON。我打赌它会作为一个函数返回。是的。当然,这是一个函数…你如何定义用户?你确定它是对象而不是字符串吗?它是主干模型吗?我这样问是因为你在你的问题中添加了主干标记。是的,我帖子中的代码在一个视图中,user
对象被传递到该视图中。我运行了警报(用户类型)
,它返回对象
。我将为问题添加更多上下文。请尝试user.toJSON。我打赌它会作为一个函数返回。是的。当然,这是一个函数……是的,通常它会工作。我相信我的问题与主干上下文有关…我理解。请您更新问题并提供更多信息,以便我们提供帮助。是的,正常情况下,它会起作用。我相信我的问题与主干上下文有关…我理解。能不能请你更新问题并提供更多信息,以便我们能提供帮助。我刚刚将{username:user.get(“用户名”)、传记:user.get(“传记”)}
传递到Handlebar模板函数中,效果非常好。谢谢是的,这起作用了。我刚刚将{username:user.get(“用户名”)、传记:user.get(“传记”)}
传递到Handlebar模板函数中,效果非常好。谢谢谢谢你教我不要总是相信JSON.stringify:-)谢谢你教我不要总是相信JSON.stringify:-)