jQuery attr vs prop?

Teraz to nie jest tylko kolejnaJakie jest pytanie o różnicę, Mamwykonałem kilka testów (http://jsfiddle.net/ZC3Lf/) modyfikowanieprop iattr z<form action="/test/"></form>​ z wyjściem:

1) prop Test modyfikacji
Rekwizyt:http://fiddle.jshell.net/test/1
Attr:http://fiddle.jshell.net/test/1

2) Test modyfikacji Attr
Rekwizyt:http://fiddle.jshell.net/test/1
Attr:/test/1

3) Attr, a następnie Test modyfikacji
Rekwizyt:http://fiddle.jshell.net/test/11
Attr:http://fiddle.jshell.net/test/11

4) Prop, a następnie test modyfikacji Attr
Rekwizyt:http://fiddle.jshell.net/test/11
Attr:http://fiddle.jshell.net/test/11

Teraz jestem zdezorientowany co do kilku rzeczy, o ile moja wiedza sięga:
Rekwizyt: Wartość w bieżącym stanie po wszelkich modyfikacjach za pomocą JavaScript
Attr: Wartość zdefiniowana w html na stronie ładowania.

Teraz, jeśli to jest poprawne,

Dlaczego modyfikowanieprop wydają się robićaction w pełni kwalifikowany i odwrotnie, dlaczego nie modyfikuje się atrybutu?Dlaczego modyfikowanieprop w1) zmodyfikować atrybut, który nie ma dla mnie sensu?Dlaczego modyfikowanieattr w2) zmodyfikować nieruchomość, czy mają być połączone w ten sposób?

Kod testu

HTML

JavaScript

var element = $('form');
var property = 'action';

/*You should not need to modify below this line */

var body = $('body');
var original = element.attr(property);

body.append('<h1>Prop Modification test</h1>');
element.prop(property, element.prop(property) + 1);

body.append('Prop: '+element.prop(property)+'<br />');
body.append('Attr: '+element.attr(property)+'<hr />');

//reset
element.prop(property, original);
element.attr(property, original);

body.append('<h1>Attr Modification test</h1>');
element.attr(property, element.attr(property) + 1);

body.append('Prop: '+element.prop(property)+'<br />');
body.append('Attr: '+element.attr(property)+'<hr />');

//reset
element.prop(property, original);
element.attr(property, original);

body.append('<h1>Attr then Prop Modification test</h1>');
element.attr(property, element.attr(property) + 1);
element.prop(property, element.prop(property) + 1);

body.append('Prop: '+element.prop(property)+'<br />');
body.append('Attr: '+element.attr(property)+'<hr />');

//reset
element.prop(property, original);
element.attr(property, original);

body.append('<h1>Prop then Attr Modification test</h1>');
element.prop(property, element.prop(property) + 1);
element.attr(property, element.attr(property) + 1);

body.append('Prop: '+element.prop(property)+'<br />');
body.append('Attr: '+element.attr(property)+'<hr />');

questionAnswers(4)

yourAnswerToTheQuestion