Perché i metodi di Object Constructor non funzionano su DOM Elements

0
//------------
let person = {
    name: 'John Doe',
    age: 22
}

let e = document.getElementById('task-title');

/* Object.getOwnPropertyNames()
Returns an array containing the names of all of the given object's own enumerable and 
non-enumerable properties. */

console.log(typeof person, person);
console.log(Object.getOwnPropertyNames(person));

console.log(typeof e);
console.log(Object.getOwnPropertyNames(e));
console.dir(e);

Per il mio oggetto persona personalizzata i metodi Object.getOwnPropertyNames funzionano, tuttavia non funziona l'oggetto Elemento Perché?

&

Gli oggetti elemento DOM sono diversi da un oggetto personalizzato? Se sì come?

    
posta Mohammad Daud Ibrahim 17.05.2018 - 00:59
fonte

1 risposta

0

Il document.getElementById restituisce un oggetto Element che ha un Node come suo prototipo. Object.getOwnPropertyNames restituisce una matrice delle proprietà proprie e enumerabili di un oggetto, il che significa che non include le proprietà ereditate da quell'oggetto .

Ad esempio:

function A(){
    this.propA = 'propA';
}

function B(){
    A.call(this);
    this.propB = 'propB';
}

B.prototype = Object.create(A);

var obj = new B();
var proto = Object.getPrototypeOf(obj);

console.log(Object.getOwnPropertyNames(obj)) // ["propB"];
console.log(Object.getOwnPropertyNames(proto)) // ["propA"];
    
risposta data 17.05.2018 - 17:44
fonte

Leggi altre domande sui tag