This translation is incomplete. Please help translate this article from English

hasOwnProperty() metodu belirtilen niteliğin nesnede olup olmadığını boolean cinsinden döner.

Söz Dizimi



Kontrol edilecek niteliğin ismi. 


Bütün nesneler (objects) Object soyundan türetildiği için,  hasOwnProperty metodunu miras almışlardır. Bu metod parametre olarak gönderilen bir niteliğin o nesne içerisinde yer alıp yer almadığını belirlemek için kullanılır. in operatörünün aksine nesne içerisinde yer alan bütün prototype'ları kontrol etmez.


hasOwnProperty metodunu bir niteliğin var olup olmadığını tespit etmek için kullanalım.

Aşağıda yer alan örnekte o nesnesinin prop niteliğine sahip olup olmadığını kontrol edilmektedir.

o = new Object();
o.prop = 'ben aslında varım';

function changeO() { // prop niteliğini kaldırıyoruz.
  o.newprop = o.prop;
  delete o.prop; 

o.hasOwnProperty('prop');   // true değeri döndürür
o.hasOwnProperty('prop');   // false değeri döndürür

Tanımlanmış nitelikler vs Miras alnmış nitelikler

Aşağıda yer alan örnek tanımlanmış nitelikler ile üst soydan miras alınmış nitelikler arasındaki farkı göstermektedir.

o = new Object();
o.prop = 'exists';
o.hasOwnProperty('prop');             // returns true
o.hasOwnProperty('toString');         // returns false
o.hasOwnProperty('hasOwnProperty');   // returns false

Görüldüğü üzere, hasOwnProperty nesnesi ancak sonradan tanımlamış olan niteliklerin varlığını kontrol etmektedir.

Iterating over the properties of an object

The following example shows how to iterate over the properties of an object without executing on inherit properties. Note that the for...in loop is already only iterating enumerable items, so one should not assume based on the lack of non-enumerable properties shown in the loop that hasOwnProperty itself is confined strictly to enumerable items (as with Object.getOwnPropertyNames()).

var buz = {
  fog: 'stack'

for (var name in buz) {
  if (buz.hasOwnProperty(name)) {
    console.log('this is fog (' + name + ') for sure. Value: ' + buz[name]);
  else {
    console.log(name); // toString or something else

Using hasOwnProperty as a property name

JavaScript does not protect the property name hasOwnProperty; thus, if the possibility exists that an object might have a property with this name, it is necessary to use an external hasOwnProperty to get correct results:

var foo = {
  hasOwnProperty: function() {
    return false;
  bar: 'Here be dragons'

foo.hasOwnProperty('bar'); // always returns false

// Use another Object's hasOwnProperty and call it with 'this' set to foo
({}).hasOwnProperty.call(foo, 'bar'); // true

// It's also possible to use the hasOwnProperty property from the Object prototype for this purpose
Object.prototype.hasOwnProperty.call(foo, 'bar'); // true

Note that in the last case there are no newly created objects.


Specification Status Comment
ECMAScript 3rd Edition (ECMA-262) Standard Initial definition. Implemented in JavaScript 1.5.
ECMAScript 5.1 (ECMA-262)
The definition of 'Object.prototype.hasOwnProperty' in that specification.
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Object.prototype.hasOwnProperty' in that specification.
ECMAScript Latest Draft (ECMA-262)
The definition of 'Object.prototype.hasOwnProperty' in that specification.

Tarayıcı uyumluluğu

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes) (Yes) (Yes) (Yes) (Yes)
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

Ayrıca bakınız