я хочу сделать что-то подобное,
function MyObject(args){
keys=Object.getOwnPropertyNames(args)
keys.forEach(function(key){
this[key]=args[key]
})
}
после этого я попытался создать объект, но его атрибуты не были установлены..
n=new MyObject({title:'x',age:19})
console.log(n.title)
Выход: не определено !!
так что может кто-нибудь сказать мне, что я делаю неправильно... я даже попытался заменить this[key]
на MyObject[key]
, но получил тот же результат..
В forEach значение this
не является экземпляром MyObject
который вы создаете. Вы можете использовать функцию стрелки, или вы можете сохранить this
в верхней области:
function MyObject(args){
var self = this;
keys=Object.getOwnPropertyNames(args)
keys.forEach(function(key){
self[key]=args[key]
})
}
n=new MyObject({title:'x',age:19})
console.dir(n)
console.log(n.title)
function MyObject(args){
keys=Object.getOwnPropertyNames(args)
keys.forEach((key) => {
this[key]=args[key]
})
}
n=new MyObject({title:'x',age:19})
console.dir(n)
console.log(n.title)
this
будет ссылаться на неправильный объект