Giriş
Açıklaması
şöyle. Yani object ve Object farklı şeyler.
An object is a concept in JavaScript that is a generic container for some data. An object contains properties with keys and associated values.
In JavaScript, everything that is not a primitive is an object. This includes functions, which are basically a special type of object that can be "called" with the () syntax.
JavaScript provides a number of built-in functions that have various purposes. Two such functions happen to be called Object and Function. So in other words Object is a function and thus also an "object" (data structure).
Örnek
Şöyle
yaparız.
function Foo() {
var a = "3"; // a is local to this scope, you cannot get to it from outside
console.log(a); // prints 3 - local variable a is accessible inside the scope
console.log(Foo.a); // prints 5 - a is a property on object Foo, and is accessible here
}
// var a inside Foo cannot be accessed here
Foo.a = 5;
Foo();
defineProperty metodu
Açıklaması
şöyle
Object.defineProperty should usually only be used when defining a new property
defineProperty metodu + enumerable
Açıklaması
şöyle.
enumerable
true if and only if this property shows up during enumeration of the properties on the corresponding object.
Defaults to false.
Açıklaması
şöyle.
Non-enumerable means that property will not be shown in Object.keys() or for..in loop neither in console
Örnek
Şöyle
yaparız.. defineProperty() metoduna true geçmediğimiz için eklenen alan console.log() çıktısında görünmez.
//Code Snippet
let profile = {
name: 'Barry Allen',
}
// I added a new property in the profile object.
Object.defineProperty(profile, 'age', {
value: 23,
writable: true
})
console.log(profile)
console.log(profile.age)
Çıktı olarak şunu
alırız.
{name: "Barry Allen"}
23
defineProperty metodu + writable
Örnek
Şöyle
yaparız
var x = {};
Object.defineProperty(x, 'name', {
writable: true
};
Örnek
Elimizde şöyle bir kod
olsun
var x = {};
Object.defineProperty(x, 'name', {
value: 'foo'
});
x.name = 'bar';
console.log(x.name);
Çıktı olarak "foo" alırız çümkü defineProperty writable alanını varsayılan değer olarak false ile ilklendirir.
hasOwnProperty metodu
true veya false döner.
Örnek
Şöyle
yaparız.
const myArrOfObjects = [{
cheesePuffs: "yes"
},
{
time: "212"
}];
let findByName = (name) => {
return myArrOfObjects.some(obj=> {
return obj.hasOwnProperty(name)
})
}
console.log(findByName("cheesePuffs")) //true
console.log(findByName("time")) //true
console.log(findByName("123")) //false
Örnek
Belirtilen dizideki nesnenin bir alanının değeri, parametre değeri ile aynıysa siler. Şöyle
yaparız.
var removeByAttr = function(arr, attr, value){
var i = arr.length;
while(i--){
if( arr[i]
&& arr[i].hasOwnProperty(attr)
&& (arguments.length > 2 && arr[i][attr] === value ) ){
arr.splice(i,1);
}
}
return arr;
}
Çağırmak için şöyle
yaparız.
var arr = [{id:1,name:'serdar'}, {id:2,name:'alfalfa'},{id:3,name:'joe'}];
removeByAttr(arr, 'id', 1);
// [{id:2,name:'alfalfa'}, {id:3,name:'joe'}]
removeByAttr(arr, 'name', 'joe');
// [{id:2,name:'alfalfa'}]
keys metodu
Örnek
Elimizde şöyle bir kod
olsun.
{r1: "Room 1", r2: "Room 2", r3: "Room 3"}
Şu hale çevirmek
isteyelim.
rooms = [
{ id: 'r1', name: 'Room 1'},
{ id: 'r2', name: 'Room 2'},
{ id: 'r3', name: 'Room 3'},
];
Şöyle
yaparız.
const array = [];
Object.keys(yourObject).forEach((key) => {
array.push({[key]: object1[key]});
});
Örnek
İki tane aynı tipten nesneyi karşılaştırmak için şöyle
yaparız.
for(const key of Object.keys(object1)) {
if(key in object2) {
process(object1[key], object2[key]);
}
}
toString metodu
Örnek
Eğer toString() override edilmemişse [object Object] döner. Şöyle
yaparız.
var tags = [{"value":"tag1"},{"value":"tag2"}];
console.log("tags: " + tags);
Çıktı olarak şunu
alırız.
tags: [object Object],[object Object]
values metodu
Object.values() metodu yazısına taşıdım.