Bug 4203

Summary: hasOwnProperty() returns true for Object.protoype properties
Product: WebKit Reporter: Vicki Murley <vicki>
Component: JavaScriptCoreAssignee: Maciej Stachowiak <mjs>
Status: RESOLVED DUPLICATE    
Severity: Normal    
Priority: P2    
Version: 420+   
Hardware: Mac   
OS: OS X 10.4   

Description Vicki Murley 2005-07-29 10:55:08 PDT
This bug is also in Radar as <rdar://4190700>

See http://phrogz.net/JS/hasOwnProperty_test.html:  

Object.prototype.toSourceCode = function(){ /*stuff*/ }

var animalSounds = { cat:'meow', dog:'woof' };
var output = '';

for (var animal in animalSounds){
  if ( !animalSounds.hasOwnProperty || animalSounds.hasOwnProperty(animal) ){
        output += 'The '+animal+' says "'+animalSounds[animal]+'"\n';
  }
}

Expected output:
The cat says "meow"
The dog says "woof"

Actual output from Safari 2.0 release 1:
The toSourceCode says "function () 
{
}"
The cat says "meow"
The dog says "woof"

-------------------------------------------
Comment 1 Maciej Stachowiak 2005-07-29 14:56:01 PDT
Already fixed.

*** This bug has been marked as a duplicate of 3293 ***