Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не возвращает свойства с атрибутами Object (https://javascript.ru/forum/misc/64538-ne-vozvrashhaet-svojjstva-s-atributami-object.html)

<juniorJS> 18.08.2016 20:02

Не возвращает свойства с атрибутами Object
 
Здравствуйте, ребят начал изучать джс по учебнику Флєнагана
помогите разобратьса
var o ={};
var p = {x:1}
Object.defineProperties(o,{x: {value:1,writable:true,enumereble:false,configurable:true},
	y: {value:5,writable:true,enumerable:false,configurable:true}}); 

Object.defineProperty(p,'extend',{
	writable:true,
	enumerable:false,
	configurable:true,
	value: function(o) {
		var names = Object.getOwnPropertyNames(o);
		console.log(names);
		for(var i = 0; i < names.length;i++) {
			if(names[i] in o)  continue;
			var desc = Object.getOwnPropertyDescriptor(o,names[i]);
			Object.defineProperty(this, names[i],desc);
		}
	}

})
console.log(p);
Object.getOwnPropertyDescriptor(p,"y");

вот такой пример, здесь нужно передать все атрибуты свойст вместе со свойствами объекта О в объект Р, но както свойства не передаютса, немогу понять в чем трабл. p.y возвращает undefined....хотя по идее должен возвратить значение 5

рони 18.08.2016 20:02

<juniorJS>,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

<juniorJS> 18.08.2016 20:09

Спасибо за подсказку, зделал, вроде более четабельный теперь код

<juniorJS> 18.08.2016 20:55

Спасибо уже разобрался сам
нужно было в условие o заменитьь на this.
и просто вызвать тот метод вот так)
p.extend(o);

рони 18.08.2016 21:30

Цитата:

Сообщение от <juniorJS>
нужно было в условие o заменитьь на this.
и просто вызвать тот метод вот так)
p.extend(o);

а рабочий вариант показать?


Часовой пояс GMT +3, время: 18:34.