propand attrdo not always give different results. They give only different results when there is a difference between a property and an attribute.
For example, with the checked/ property attribute :
$(':checkbox').prop('checked'); // returns boolean true false
$(':checkbox').attr('checked'); // returns string "checked" or undefined
This is well explained in vs . propattr
, title/property, . , .