3. Proxy pattern

by petrussola

JavaScript

const car = {
	name: "Toyota",
  model: "Corolla"
}

const handler = {
	get: (target, prop, receiver) => {
  	console.log(`Someone is requesting access to the property ${prop}`)
  	return target[prop]
  },
  set: (target, prop, value) => {
  console.log(typeof value, "value")
  	if (typeof value === "number") {
    	console.log(`The ${prop} you are trying to change can\'t be a number`)
      return
    }
    target[prop] = value
    console.log(`Property has been changed to ${value}`)
    return
  }
}

const carProxy = new Proxy(car, handler)

console.log(carProxy.name)
console.log(carProxy.model)
carProxy.name = "Ford"
carProxy.model = 2345
console.log(carProxy.name)