20 Aralık 2019 Cuma

Object Sınıfı

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.

Hiç yorum yok:

Yorum Gönder