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:-)