To tłumaczenie jest niekompletne. Pomóż przetłumaczyć ten artykuł z języka angielskiego.

Wstęp

Metoda hasOwnProperty() zwraca wartość true jeśli obiekt, na którym została wywołana posiada konkretną własność.

Składnia

obj.hasOwnProperty(prop)

Parametry

prop
Nazwa (String) własności lub Symbol, do sprawdzenia.

Wartość zwracana

A Boolean wskazujący, czy obiekt zawiera w sobie określoną właściwość.

Opis

Każdy obiekt pochodzący od Object dziedziczy metodę hasOwnProperty. Może być ona użyta do stwierdzenia czy obiekt posiada określoną własność, jako bezpośrednią (direct) własność. W przeciwieństwie do  operatora in, metoda hasOwnProperty nie sprawdza w głąb łańcucha własności obietu.

Notatka

hasOwnProperty zwraca true, nawet jeśli wartość właściwości to null lub undefined.

o = new Object();
o.propOne = null;
o.hasOwnProperty('propOne');   // zwraca true
o.propTwo = undefined;  
o.hasOwnProperty('propTwo');   // zwraca true

Przykłady

Użycie hasOwnProperty do testowania istnienia własności

Poniższy przykład określa czy obiekt o posiada własność o nazwie prop:

o = new Object();
o.hasOwnProperty('prop');   // zwraca false
o.prop = 'istnieje';  
o.hasOwnProperty('prop');   // zwraca true

Własności bezpośrednie kontra odziedziczone

Poniższy przykład rozróżnia bezpośrednie właściwości z właściwościami dziedziczonymi w łańcuchu prototypów:

o = new Object();
o.prop = 'istnieje';
o.hasOwnProperty('prop');             // zwraca true
o.hasOwnProperty('toString');         // zwraca false
o.hasOwnProperty('hasOwnProperty');   // zwraca false

Iterowanie przez właściwości obiektu

Poniższy przykład ilustruje sposób iteracji po właściwościach obiektu bez wykonywania iteracji na dziedziczonych właściwościach.

const obj = {
  prop: 'Wartość',
  secondProp: 'Wartość 2'
}

for (const name in obj) {
  if (obj.hasOwnProperty(name)) {
    console.log('Znaleziono własność ' + name + ' o wartości ' + obj[name])
  } else {
    console.log('Brak własności: ', name)
  }
}

Zwróć uwagę, że pętla for...in tylko iteruje właściwości przeliczalne, a nieprzeliczanych nie zauważa.

Używanie hasOwnProperty jako nazwy właściwości

JavaScript nie chroni nazwy właściwości hasOwnProperty; tak więc, jeśli istnieje możliwość, że obiekt może mieć właściwość o tej nazwie, konieczne jest użycie zewnętrznej właściwości hasOwnProperty, aby uzyskać poprawne wyniki:

const obj = {
  hasOwnProperty: function() {
    return false;
  },
  prop: 'Kolejna właściwość'
};

obj.hasOwnProperty('prop'); // zawsze zwróci false

// Użyj właściwości hasOwnProperty innego obiektu i wywołaj ją, ustawiając "this" na obj
({}).hasOwnProperty.call(obj, 'prop'); // zwraca true

// W tym celu można również użyć własności hasOwnProperty z prototypu Object
Object.prototype.hasOwnProperty.call(obj, 'prop'); // zwraca true

Zwróć uwagę, że w ostatnim przypadku nie ma żadnych nowo utworzonych obiektów.

Specyfikacja

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

Wsparcie przeglądarek

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
hasOwnPropertyChrome Full support YesEdge Full support 12Firefox Full support 1IE Full support YesOpera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes

Legend

Full support  
Full support

Zobacz także

Autorzy i etykiety dokumentu

Autorzy tej strony: mdnwebdocs-bot, kanapka94, s1awek, dianafa
Ostatnia aktualizacja: mdnwebdocs-bot,