// envenenamiento objeto.prototypeObject.prototype.bar = 1; var foo = {goo: undefined}; foo.bar; // 1'Bar 'en foo; // truefoo.hasownproperty ('bar'); // falsefoo.hasownproperty ('goo'); // verdaderoAquí, solo la Property de Haswn puede dar la respuesta correcta, que es muy necesaria cuando se trata de atravesar las propiedades de un objeto. No hay otra forma en JavaScript para decir si un atributo se define en el objeto mismo o se hereda de la cadena prototipo.
ASOWNProperty como propiedad
JavaScript no establece a HasownProperty como una palabra sensible, lo que significa que puede tener una propiedad llamada ASOWNProperty. En este momento, ya no puede utilizar su método de HaswnProperty para juzgar las propiedades, por lo que debe utilizar el método externo de HaswnProperty para emitir juicios.
var foo = {HasnownProperty: function () {return false; }, Bar: 'aquí se dragones'}; foo.hasownproperty ('bar'); // siempre devuelve falso // use la property de otro objeto y llámalo con 'this' set a foo ({}). diownproperty.call (foo, 'bar'); // true // También es posible usar aSownProperty del objeto // prototipo para este propósitoObject.prototype.hasownproperty.call (foo, 'bar'); // verdaderoResumir
Al juzgar que el atributo del objeto existe, HasnownProperty es el único método en el que se puede confiar. Aquí también queremos recordarle que cuando usemos en bucle para atravesar objetos, usar aSownproperty será bueno para evitar los problemas causados por las extensiones prototipo de objetos.
Las siguientes son las adiciones de otros internautas:
ISOWNProperty () en el prototipo de objeto de objeto en JavaScript se usa para determinar que una propiedad se define en el objeto en sí mismo en lugar de heredarse de la cadena prototipo.
obj.hasownproperty (Prop)
Accesorio de parámetros
El nombre o el símbolo de la cadena del atributo (ES6) que se detectará
o = nuevo objeto (); o.prop = 'existe'; o.hasownproperty ('prop'); // return trueO.hasownproperty ('toString'); // return falseo.hasownproperty ('HasnownProperty'); // devolver falsoUse aSownProperty como el nombre de la propiedad de un objeto
Debido a que JavaScript no usa a Hasownproperty como una palabra sensible, es muy probable que nombremos una propiedad del objeto como HanownProperty, por lo que ya no podemos usar el método de HaswnProperty del prototipo de objeto para determinar si la propiedad es de la cadena de prototipo.
var foo = {HasnownProperty: function () {return false; }, Bar: 'aquí se dragones'}; foo.hasownproperty ('bar'); // siempre devolver falso¿Cómo resolver este problema al no usar este objeto? Necesitamos utilizar el método real de HaswnProperty en la cadena prototipo:
({}). ASOWNProperty.call (foo, 'bar'); // true // o: object.prototype.hasownproperty.call (foo, 'bar'); // verdaderoReferencia: https://developer.mozilla.org/zh-cn/docs/web/javascript/reference/global_objects/object/hasownproperty