为什么全局对象的属性不接受新的赋值?

时间:2012-04-06 20:58:06

标签: javascript

我正在尝试为此全局会话对象中的'attendee'对象的'notes'属性分配一个新值...每当我尝试赋值时,该值都不会保留。

从webkit中的控制台:

> session['attendee']['notes']
null
> session['attendee']['notes'] = "test"
"test"
> session['attendee']['notes']
null
> window.session['attendee']['notes'] = "test"
"test"
> session['attendee']['notes']
null
> window.session['attendee']['notes']
null

Session在全局范围内设置如此:

window.session = {};

然后我就像这样从浏览器的sql数据库中分配一个对象;

window.session['attendee'] = {'name':'mike' ..etc..}

更新

以下是更多控制台信息:

> window.session['attendee']
Object
  address_1: null
  address_2: null
  app_id: 1
  badge_id: null
  budget: null
  city: null
  company: null
  decision_maker: null
  email: null
  first_name: "Anonymous"
  followup: null
  id: null
  is_influencer: null
  is_purchaser: null
  is_user: null
  last_name: ""
  notes: null
  phone: null
  rating: null
  scanned: 1
  state: null
  synced: null
  zip: null
  __proto__: Object
> window.session['attendee'].notes
null
> window.session['attendee'].notes = "TEST"
"TEST"
> window.session['attendee'].notes
null

所以session.attendee中有一个对象,“notes”是该对象中的一个属性,但是为它赋值不会坚持。

2 个答案:

答案 0 :(得分:4)

尝试分配给非对象的属性不会做任何事情。确保赋值顺序如下:

window.session = {};
window.session.attendee = {};
window.session.attendee.notes = "test";

答案 1 :(得分:1)

这对我来说很好。我猜你做的很傻。

window.session;
window.session = {};
window.session = {attendee:{notes:""}};
window.session.attendee.notes = "awesome";
session.attendee.notes; // "awesome"

以下是控制台中输出的内容:

window.session;
undefined
window.session = {};
Object
window.session = {attendee:{notes:""}};
Object
window.session.attendee.notes = "awesome";
"awesome"
window.session.attendee
Object
notes: "awesome"
__proto__: Object