Может ли кто-нибудь сказать мне, почему «hasOwnProperty» является ложным в приведенном ниже примере, тогда как getOwnPropertyDescriptor не является нулевым ?.Почему hasOwnProperty (o, «dummy») является «false» после defineProperty (o, «dummy»)
По MDN:
defineProperty() - ... определяет новое свойство непосредственно на объекте ...
hasOwnProperty() - ... Этот метод может быть использован для определения является ли объект имеет указанное свойство как прямое свойство этого объекта ...
getOwnPropertyDescriptor() - ... возвращает собственный дескриптор свойства ...
var _g = {};
Object.defineProperty(_g, "dummy", {
get: function() {
return 1
},
set: function() {},
enumerable: true
});
var hasOwnProperty = Object.hasOwnProperty(_g, "dummy");
var getOwnPropertyDescriptor = JSON.stringify(Object.getOwnPropertyDescriptor(_g, "dummy"));
Выход:
hasOwnProperty=false
getOwnPropertyDescriptor={"enumerable":true,"configurable":false}
Прохладный, эта второстепенная вещь была упущена :(Был путать этот странный дизайн ES5 - getOwnPropertyDescriptor() является членом класса, а hasOwnProperty() - это экземпляр. –