.equals()
сравнивает данные в классе (при условии, что функция реализована). ==
сравнивает местоположения указателя (расположение объекта в памяти).
==
возвращает true, если оба объекта (NOT TALKING OF PRIMITIVES) указывают на экземпляр SAME. .equals()
возвращает true, если два объекта содержат одни и те же данные equals()
Versus ==
в Java
Это может вам помочь.
Можно циклично выполниться через ключи как это:
for (var key in data) {
console.log(key);
}
Это регистрирует "Имя" и "Значение".
Если у Вас будет тип более сложного объекта (не только простой подобный хешу объект, как в исходном вопросе), то Вы захотите только к циклу через ключи, которые принадлежат самому объекту, в противоположность включает прототип объекта:
for (var key in data) {
if (data.hasOwnProperty(key)) {
console.log(key);
}
}
Как Вы отметили, ключи, как гарантируют, не будут ни в каком конкретном порядке. Отметьте, как это отличается от следующего:
for each (var value in data) {
console.log(value);
}
Эти циклы в качестве примера через значения, таким образом, это зарегистрировалось бы Property Name
и 0
. N.B.: for each
синтаксис главным образом только поддерживается в Firefox, но не в других браузерах.
Если Ваши целевые браузеры поддерживают ES5, или Ваш сайт включает es5-shim.js
(рекомендуемый), можно также использовать Object.keys
:
var data = { Name: 'Property Name', Value: '0' };
console.log(Object.keys(data)); // => ["Name", "Value"]
и цикл с Array.prototype.forEach
:
Object.keys(data).forEach(function (key) {
console.log(data[key]);
});
// => Logs "Property Name", 0
Вы часто будете хотеть исследовать особые свойства экземпляра объекта, безо всего его совместно использовал опытные методы и свойства:
Obj.prototype.toString= function(){
var A= [];
for(var p in this){
if(this.hasOwnProperty(p)){
A[A.length]= p+'='+this[p];
}
}
return A.join(', ');
}