Bug Tracker

Modify

Ticket #6992 (closed enhancement: wontfix)

Opened 3 years ago

Last modified 3 years ago

data() can be used as data[]

Reported by: marian Owned by:
Priority: undecided Milestone: 1.4.3
Component: data Version: 1.4.2
Keywords: Cc:
Blocking: Blocked by:

Description

I've noticed a strange behavior (I don't want to say it's a bug):

Normally, you use  data this way:

>>> $('body').data('foo', 'bar')
[body.jq-enhanced]
>>> $('body').data('foo')
"bar"
>>> $('body > div').data('foo')
null

– everything's fine, other elements are not affected.

However if one uses it as follows, which is not that digressive IMHO (at least it was how I used it without thinking about it), everything seems also fine: …

>>> $('body').data['foo'] = 'bar'
"bar"
>>> $('body').data['foo']
"bar"

… until here:

>>> $('body > div').data['foo']
"bar"

As I said, I know this is not a bug, and I understand where the behavior comes from – all datas of all elements are the same object, and, well, [] does write on the object directly.

But nonetheless, I want to ask whether something can be done here to avoid this mistake, which is somehow self-evident and, I assume, made often. (It took me a looong time to find out that this was the reason :-) )

Change History

comment:1 Changed 3 years ago by dmethvin

I'm not sure how we could prevent this. You're assigning values to properties of the data method. People have made similar mistakes like $("body").innerHTML = "hello"" that are also pretty difficult to detect. Ecmascript 5 will have the ability to seal objects to prevent new properties/methods from being assigned, but for now with existing browsers I don't see a solution.

comment:2 Changed 3 years ago by dmethvin

  • Type changed from bug to enhancement
  • Component changed from unfiled to data

comment:3 Changed 3 years ago by dmethvin

  • Priority set to undecided
  • Status changed from new to closed
  • Resolution set to wontfix

No way we can fix this, unfortunately.

Please follow the  bug reporting guidlines and use  jsFiddle when providing test cases and demonstrations instead of pasting the code in the ticket.

View

Add a comment

Modify Ticket

Action
as closed
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.