Ð ÑзÑке JavaScript ÑвойÑÑва обÑекÑов могÑÑ Ð±ÑÑÑ Ð¿ÐµÑеÑиÑлÑемÑми или непеÑеÑиÑлÑемÑми (вÑÑÑеÑаеÑÑÑ Ð²Ð°ÑÐ¸Ð°Ð½Ñ Ð¿ÐµÑевода: ÑÑÑÑнÑе или неÑÑÑÑнÑе). ÐÑли внÑÑÑÐµÐ½Ð½ÐµÐ¼Ñ ÑÐ»Ð°Ð³Ñ [[Enumerable]] ÑвойÑÑва пÑиÑвоиÑÑ Ð·Ð½Ð°Ñение true, Ñо данное ÑвойÑÑво ÑÑановиÑÑÑ Ð¿ÐµÑеÑиÑлÑемÑм. ÐÑо пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ ÑвойÑÑв, ÑозданнÑÑ Ð¿ÑоÑÑÑм пÑиÑваиванием или ÑеÑез иниÑиализаÑÐ¸Ñ ÑвойÑÑв (ÑвойÑÑва, опÑеделÑннÑе ÑеÑез Object.defineProperty полÑÑаÑÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð·Ð½Ð°Ñение Ñлага [[Enumerable]] ÑавнÑм false). ÐеÑеÑиÑлÑемÑе ÑвойÑÑва ÑÑаÑÑвÑÑÑ Ð² иÑеÑаÑии в Ñикле for...in, еÑли ÑолÑко Ð¸Ð¼Ñ ÑвойÑÑва не Символ. ÐÑинадлежноÑÑÑ ÑвойÑÑва опÑеделÑеÑÑÑ Ñем, пÑÐ¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð¸Ñ Ð»Ð¸ оно непоÑÑедÑÑвенно обÑекÑÑ Ð¸Ð»Ð¸ полÑÑено из ÑепоÑки пÑоÑоÑипов. Также можно полÑÑиÑÑ Ð²ÐµÑÑ ÑпиÑок ÑвойÑÑв обÑекÑа. Ðиже, в ÑаблиÑе, ÑÐºÐ°Ð·Ð°Ð½Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñе ÑпоÑÐ¾Ð±Ñ Ð½Ð°Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ, полÑÑÐµÐ½Ð¸Ñ Ð¸ иÑеÑаÑии ÑвойÑÑв обÑекÑов. ÐекоÑоÑÑе из Ð½Ð¸Ñ Ð½ÐµÐ»ÑÐ·Ñ Ð¸ÑполÑзоваÑÑ Ð±ÐµÐ· дополниÑелÑного кода, пÑимеÑÑ ÐºÐ¾ÑоÑого пÑÐ¸Ð²ÐµÐ´ÐµÐ½Ñ Ð¿Ð¾Ñле ÑаблиÑÑ.
ÐеÑеÑиÑлÑемоÑÑÑ Ð¸ пÑинадлежноÑÑÑ ÑвойÑÑв - вÑÑÑоеннÑе меÑÐ¾Ð´Ñ Ð¾Ð¿ÑеделениÑ, полÑÑÐµÐ½Ð¸Ñ Ð¸ иÑеÑаÑии ÐазнаÑение СвойÑÑва обÑекÑа СвойÑÑва обÑекÑа и его пÑоÑоÑипов СвойÑÑва из ÑепоÑки пÑоÑоÑипов ÐпÑеделение ÐеÑеÑиÑлÑемÑе ÐепеÑеÑиÑлÑемÑе ÐеÑеÑиÑлÑемÑе и ÐепеÑеÑиÑлÑемÑеpropertyIsEnumerable
hasOwnProperty
и !propertyIsEnumerable
hasOwnProperty
ÐедоÑÑÑпно без дополниÑелÑного кода ÐедоÑÑÑпно без дополниÑелÑного кода ÐолÑÑение ÐеÑеÑиÑлÑемÑе ÐепеÑеÑиÑлÑемÑе ÐеÑеÑиÑлÑемÑе и ÐепеÑеÑиÑлÑемÑе Object.keys
ÐолÑÑиÑÑ getOwnPropertyNames
, вÑбÑаÑÑ ÑвойÑÑва, не ÑдовлеÑвоÑÑÑÑие propertyIsEnumerable
getOwnPropertyNames
ÐедоÑÑÑпно без дополниÑелÑного кода ÐедоÑÑÑпно без дополниÑелÑного кода ÐÑеÑаÑÐ¸Ñ ÐеÑеÑиÑлÑемÑе ÐепеÑеÑиÑлÑемÑе ÐеÑеÑиÑлÑемÑе и ÐепеÑеÑиÑлÑемÑе ÐÑеÑаÑÐ¸Ñ Ð¿Ð¾ маÑÑÐ¸Ð²Ñ Object.keys
ÐÑеÑаÑÐ¸Ñ Ð¿Ð¾ getOwnPropertyNames
, Ñ Ð²ÑбÑаннÑми ÑвойÑÑвами, не ÑдовлеÑвоÑÑÑÑими propertyIsEnumerable
ÐÑеÑаÑÐ¸Ñ Ð¿Ð¾ getOwnPropertyNames
ÐеÑеÑиÑлÑемÑе ÐепеÑеÑиÑлÑемÑе ÐеÑеÑиÑлÑемÑе и ÐепеÑеÑиÑлÑемÑе for..in
ÐедоÑÑÑпно без дополниÑелÑного кода ÐедоÑÑÑпно без дополниÑелÑного кода ÐедоÑÑÑпно без дополниÑелÑного кода ÐоÑÑÑп к ÑвойÑÑвам по иÑ
пеÑеÑиÑлÑемоÑÑи/пÑинадлежноÑÑи
ХоÑим замеÑиÑÑ, ÑÑо даннÑй алгоÑиÑм ÑÑÑекÑивен не Ð´Ð»Ñ Ð²ÑÐµÑ ÐºÐ»Ð°ÑÑов.
SimplePropertyRetriever.theGetMethodYouWant(obj).indexOf(prop) > -1
SimplePropertyRetriever.theGetMethodYouWant(obj).forEach(function (value, prop) {});
(or use filter()
, map()
, etc.)var SimplePropertyRetriever = {
getOwnEnumerables: function (obj) {
return this._getPropertyNames(obj, true, false, this._enumerable);
// Ðли можно иÑполÑзоваÑÑ for..in, оÑÑилÑÑÑованнÑй по hasOwnProperty или пÑоÑе: return Object.keys(obj);
},
getOwnNonenumerables: function (obj) {
return this._getPropertyNames(obj, true, false, this._notEnumerable);
},
getOwnEnumerablesAndNonenumerables: function (obj) {
return this._getPropertyNames(
obj,
true,
false,
this._enumerableAndNotEnumerable,
);
// Ðли можно иÑполÑзоваÑÑ: return Object.getOwnPropertyNames(obj);
},
getPrototypeEnumerables: function (obj) {
return this._getPropertyNames(obj, false, true, this._enumerable);
},
getPrototypeNonenumerables: function (obj) {
return this._getPropertyNames(obj, false, true, this._notEnumerable);
},
getPrototypeEnumerablesAndNonenumerables: function (obj) {
return this._getPropertyNames(
obj,
false,
true,
this._enumerableAndNotEnumerable,
);
},
getOwnAndPrototypeEnumerables: function (obj) {
return this._getPropertyNames(obj, true, true, this._enumerable);
// Ðли можно иÑполÑзоваÑÑ for..in
},
getOwnAndPrototypeNonenumerables: function (obj) {
return this._getPropertyNames(obj, true, true, this._notEnumerable);
},
getOwnAndPrototypeEnumerablesAndNonenumerables: function (obj) {
return this._getPropertyNames(
obj,
true,
true,
this._enumerableAndNotEnumerable,
);
},
// Private static property checker callbacks
_enumerable: function (obj, prop) {
return obj.propertyIsEnumerable(prop);
},
_notEnumerable: function (obj, prop) {
return !obj.propertyIsEnumerable(prop);
},
_enumerableAndNotEnumerable: function (obj, prop) {
return true;
},
// Ðо моÑивам http://stackoverflow.com/a/8024294/271577
_getPropertyNames: function getAllPropertyNames(
obj,
iterateSelfBool,
iteratePrototypeBool,
includePropCb,
) {
var props = [];
do {
if (iterateSelfBool) {
Object.getOwnPropertyNames(obj).forEach(function (prop) {
if (props.indexOf(prop) === -1 && includePropCb(obj, prop)) {
props.push(prop);
}
});
}
if (!iteratePrototypeBool) {
break;
}
iterateSelfBool = true;
} while ((obj = Object.getPrototypeOf(obj)));
return props;
},
};
ÐпÑеделимоÑÑÑ ÑвойÑÑв in
for..in
hasOwnProperty
propertyIsEnumerable
in Object.keys
in Object.getOwnPropertyNames
ÐеÑеÑиÑлÑемÑе true true true true true true ÐепеÑеÑиÑлÑемÑе true false true false false true УнаÑледованнÑе ÐеÑеÑиÑлÑемÑе true true false false false false УнаÑледованнÑе ÐепеÑеÑиÑлÑемÑе true false false false false false СмоÑÑиÑе Ñакже
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4