SAMPAI saya telah melakukan semuanya salah sehubungan dengan refleksi objek API. Saya tidak memperhitungkan bahwa beberapa properti didefinisikan sebagai non-enumerable secara default, seperti yang ada di prototype
API asli atau bawaan
Misalnya, ketika Anda ingin memverifikasi bahwa String.prototype
berisi metode tertentu, for..in
loop dan metode
function inspect[obj] {
var a = [];
for [var k in obj] {
a.push[k];
}
console.log[a];
return a;
}
inspect['hello']; // ["0", "1", "2", "3", "4"]
inspect[{ name: ''}]; // ["name"]
inspect[String]; // []
// inherited
function Class[v] {
this.v = v;
};
Class.prototype = {x: '1', y: '2', z: '9'};
inspect[Class]; // []
inspect[Class.prototype]; // ["x", "y", "z"]
0 tidak berfungsi. Gunakan function inspect[obj] {
var a = [];
for [var k in obj] {
a.push[k];
}
console.log[a];
return a;
}
inspect['hello']; // ["0", "1", "2", "3", "4"]
inspect[{ name: ''}]; // ["name"]
inspect[String]; // []
// inherited
function Class[v] {
this.v = v;
};
Class.prototype = {x: '1', y: '2', z: '9'};
inspect[Class]; // []
inspect[Class.prototype]; // ["x", "y", "z"]
_1 sebagai gantinyaBerikut adalah tur singkat
function inspect[obj] {
var a = [];
for [var k in obj] {
a.push[k];
}
console.log[a];
return a;
}
inspect['hello']; // ["0", "1", "2", "3", "4"]
inspect[{ name: ''}]; // ["name"]
inspect[String]; // []
// inherited
function Class[v] {
this.v = v;
};
Class.prototype = {x: '1', y: '2', z: '9'};
inspect[Class]; // []
inspect[Class.prototype]; // ["x", "y", "z"]
_0, loop function inspect[obj] {
var a = [];
for [var k in obj] {
a.push[k];
}
console.log[a];
return a;
}
inspect['hello']; // ["0", "1", "2", "3", "4"]
inspect[{ name: ''}]; // ["name"]
inspect[String]; // []
// inherited
function Class[v] {
this.v = v;
};
Class.prototype = {x: '1', y: '2', z: '9'};
inspect[Class]; // []
inspect[Class.prototype]; // ["x", "y", "z"]
3, dan function inspect[obj] {
var a = [];
for [var k in obj] {
a.push[k];
}
console.log[a];
return a;
}
inspect['hello']; // ["0", "1", "2", "3", "4"]
inspect[{ name: ''}]; // ["name"]
inspect[String]; // []
// inherited
function Class[v] {
this.v = v;
};
Class.prototype = {x: '1', y: '2', z: '9'};
inspect[Class]; // []
inspect[Class.prototype]; // ["x", "y", "z"]
1…function inspect[obj] {
var a = [];
for [var k in obj] {
a.push[k];
}
console.log[a];
return a;
}
inspect['hello']; // ["0", "1", "2", "3", "4"]
inspect[{ name: ''}]; // ["name"]
inspect[String]; // []
// inherited
function Class[v] {
this.v = v;
};
Class.prototype = {x: '1', y: '2', z: '9'};
inspect[Class]; // []
inspect[Class.prototype]; // ["x", "y", "z"]
0metode
function inspect[obj] {
var a = [];
for [var k in obj] {
a.push[k];
}
console.log[a];
return a;
}
inspect['hello']; // ["0", "1", "2", "3", "4"]
inspect[{ name: ''}]; // ["name"]
inspect[String]; // []
// inherited
function Class[v] {
this.v = v;
};
Class.prototype = {x: '1', y: '2', z: '9'};
inspect[Class]; // []
inspect[Class.prototype]; // ["x", "y", "z"]
Metode
0 mengembalikan array dari properti enumerable milik objek yang diberikanfunction inspect[obj] { var a = []; for [var k in obj] { a.push[k]; } console.log[a]; return a; } inspect['hello']; // ["0", "1", "2", "3", "4"] inspect[{ name: ''}]; // ["name"] inspect[String]; // [] // inherited function Class[v] { this.v = v; }; Class.prototype = {x: '1', y: '2', z: '9'}; inspect[Class]; // [] inspect[Class.prototype]; // ["x", "y", "z"]
- https. // pengembang. mozilla. org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
Singkatnya,
function inspect[obj] {
var a = [];
for [var k in obj] {
a.push[k];
}
console.log[a];
return a;
}
inspect['hello']; // ["0", "1", "2", "3", "4"]
inspect[{ name: ''}]; // ["name"]
inspect[String]; // []
// inherited
function Class[v] {
this.v = v;
};
Class.prototype = {x: '1', y: '2', z: '9'};
inspect[Class]; // []
inspect[Class.prototype]; // ["x", "y", "z"]
0 mengembalikan kunci untuk item yang dapat dihitung pada suatu objek, dan merupakan kunci "sendiri" [i. e. , yang tidak diwariskan dari prototipe objek]function inspect[obj] {
var a = Object.keys[obj];
console.log[a];
return a;
}
inspect['hello']; // ["0", "1", "2", "3", "4"]
inspect[{ name: ''}]; // ["name"]
inspect[String]; // []
// inherited
function Class[v] {
this.v = v;
};
Class.prototype = {x: '1', y: '2', z: '9'};
inspect[Class]; // []
inspect[Class.prototype]; // ["x", "y", "z"]
inspect[new Class['value']]; // ["v"]
_Putaran function inspect[obj] {
var a = [];
for [var k in obj] {
a.push[k];
}
console.log[a];
return a;
}
inspect['hello']; // ["0", "1", "2", "3", "4"]
inspect[{ name: ''}]; // ["name"]
inspect[String]; // []
// inherited
function Class[v] {
this.v = v;
};
Class.prototype = {x: '1', y: '2', z: '9'};
inspect[Class]; // []
inspect[Class.prototype]; // ["x", "y", "z"]
3
function inspect[obj] {
var a = [];
for [var k in obj] {
a.push[k];
}
console.log[a];
return a;
}
inspect['hello']; // ["0", "1", "2", "3", "4"]
inspect[{ name: ''}]; // ["name"]
inspect[String]; // []
// inherited
function Class[v] {
this.v = v;
};
Class.prototype = {x: '1', y: '2', z: '9'};
inspect[Class]; // []
inspect[Class.prototype]; // ["x", "y", "z"]
Pernyataan
3 mengulangi properti yang dapat dihitung dari suatu objek, dalam urutan sewenang-wenang… Perulangan akan mengulangi semua properti yang dapat dihitung dari objek itu sendiri dan yang diwarisi objek dari prototipe konstruktornyafunction inspect[obj] { var a = []; for [var k in obj] { a.push[k]; } console.log[a]; return a; } inspect['hello']; // ["0", "1", "2", "3", "4"] inspect[{ name: ''}]; // ["name"] inspect[String]; // [] // inherited function Class[v] { this.v = v; }; Class.prototype = {x: '1', y: '2', z: '9'}; inspect[Class]; // [] inspect[Class.prototype]; // ["x", "y", "z"]
- https. // pengembang. mozilla. org/en-US/docs/Web/JavaScript/Reference/Statements/for. di dalam
function inspect[obj] {
var a = [];
for [var k in obj] {
a.push[k];
}
console.log[a];
return a;
}
inspect['hello']; // ["0", "1", "2", "3", "4"]
inspect[{ name: ''}]; // ["name"]
inspect[String]; // []
// inherited
function Class[v] {
this.v = v;
};
Class.prototype = {x: '1', y: '2', z: '9'};
inspect[Class]; // []
inspect[Class.prototype]; // ["x", "y", "z"]
Namun, panggilan ini menemukan kunci
inspect[new Class['value']]; // ["v", "x", "y", "z"]
_0 yang diwarisi dari rantai prototipeinspect[new Class['value']]; // ["v", "x", "y", "z"]
function inspect[obj] {
var a = [];
for [var k in obj] {
a.push[k];
}
console.log[a];
return a;
}
inspect['hello']; // ["0", "1", "2", "3", "4"]
inspect[{ name: ''}]; // ["name"]
inspect[String]; // []
// inherited
function Class[v] {
this.v = v;
};
Class.prototype = {x: '1', y: '2', z: '9'};
inspect[Class]; // []
inspect[Class.prototype]; // ["x", "y", "z"]
3 dengan inspect[new Class['value']]; // ["v", "x", "y", "z"]
2
function inspect[obj] {
var a = [];
for [var k in obj] {
a.push[k];
}
console.log[a];
return a;
}
inspect['hello']; // ["0", "1", "2", "3", "4"]
inspect[{ name: ''}]; // ["name"]
inspect[String]; // []
// inherited
function Class[v] {
this.v = v;
};
Class.prototype = {x: '1', y: '2', z: '9'};
inspect[Class]; // []
inspect[Class.prototype]; // ["x", "y", "z"]
inspect[new Class['value']]; // ["v", "x", "y", "z"]
Untuk menduplikasi perilaku
function inspect[obj] {
var a = [];
for [var k in obj] {
a.push[k];
}
console.log[a];
return a;
}
inspect['hello']; // ["0", "1", "2", "3", "4"]
inspect[{ name: ''}]; // ["name"]
inspect[String]; // []
// inherited
function Class[v] {
this.v = v;
};
Class.prototype = {x: '1', y: '2', z: '9'};
inspect[Class]; // []
inspect[Class.prototype]; // ["x", "y", "z"]
0 [atau polyfill itu], periksa bahwa setiap kunci adalah "ownProperty" objek, menggunakan inspect[new Class['value']]; // ["v", "x", "y", "z"]
2function inspect[obj] {
var a = [];
for [var k in obj] {
obj.hasOwnProperty[k] && [a.push[k]];
}
console.log[a];
return a;
}
inspect['hello']; // ["0", "1", "2", "3", "4"]
inspect[{ name: ''}]; // ["name"]
inspect[String]; // []
// inherited
function Class[v] {
this.v = v;
};
Class.prototype = {x: '1', y: '2', z: '9'};
inspect[Class]; // []
inspect[Class.prototype]; // ["x", "y", "z"]
Sekarang kunci
inspect[new Class['value']]; // ["v", "x", "y", "z"]
_0 yang diwarisi dari rantai prototipe dilewatiinspect[new Class['value']]; // ["v"]
function inspect[obj] {
var a = [];
for [var k in obj] {
a.push[k];
}
console.log[a];
return a;
}
inspect['hello']; // ["0", "1", "2", "3", "4"]
inspect[{ name: ''}]; // ["name"]
inspect[String]; // []
// inherited
function Class[v] {
this.v = v;
};
Class.prototype = {x: '1', y: '2', z: '9'};
inspect[Class]; // []
inspect[Class.prototype]; // ["x", "y", "z"]
_1
function inspect[obj] {
var a = [];
for [var k in obj] {
a.push[k];
}
console.log[a];
return a;
}
inspect['hello']; // ["0", "1", "2", "3", "4"]
inspect[{ name: ''}]; // ["name"]
inspect[String]; // []
// inherited
function Class[v] {
this.v = v;
};
Class.prototype = {x: '1', y: '2', z: '9'};
inspect[Class]; // []
inspect[Class.prototype]; // ["x", "y", "z"]
Obyek. getOwnPropertyNames[] mengembalikan array yang elemennya adalah string yang sesuai dengan properti enumerable dan non-enumerable yang ditemukan langsung pada obj
- https. // pengembang. mozilla. org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames
Gunakan ini saat Anda ingin mengkueri objek atau fungsi asli atau bawaan untuk API properti "sendiri".