Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Принято ли в js объявлять свойства в прототипе заранее? (https://javascript.ru/forum/misc/51360-prinyato-li-v-js-obyavlyat-svojjstva-v-prototipe-zaranee.html)

riva 04.11.2014 12:58

Принято ли в js объявлять свойства в прототипе заранее?
 
Принято ли в js объявлять свойства в прототипе заранее?
Как будет правильно так-
Test.prototype = {
	prop_1: undefined,
	prop_2: undefined,
	prop_3: undefined,
	prop_4: undefined,

	init: function( args ){
		this.prop_1 = args.prop_1;
		this.prop_2 = args.prop_2;
		this.prop_3 = args.prop_3;
		this.prop_4 = args.prop_4;
	}
};

или так -
Test.prototype = {
	init: function( args ){
		this.prop_1 = args.prop_1;
		this.prop_2 = args.prop_2;
		this.prop_3 = args.prop_3;
		this.prop_4 = args.prop_4;
	}
};

riva 04.11.2014 13:46

Ой, понял какую ерунду спросил. Никак ещё не привыкну.
На первый взгляд js кажется таким простым, но его прототипную модель
тяжело принять после классовой.

Aetae 04.11.2014 14:12

Ну default-ные значения можно хранить и в прототипе. Пустые смысла не имеет само собой.

Riim 06.11.2014 08:34

> Пустые смысла не имеет само собой.

имеет, что бы сразу видеть интерфейс класса, не просматривая код методов. Ну и jsdoc сразу понятно к чему писать.

kobezzza 06.11.2014 08:38

Цитата:

Сообщение от Riim (Сообщение 339297)
> Пустые смысла не имеет само собой.

имеет, что бы сразу видеть интерфейс класса, не просматривая код методов. Ну и jsdoc сразу понятно к чему писать.

+1 Но вместо udef принято использовать null и в jsDoc удобнее юзать

Riim 06.11.2014 09:00

> Но вместо udef принято использовать null

если в поле будет лежать примитивное значение, я использую undef, если не примитивное - null.

kobezzza 06.11.2014 11:50

Цитата:

Сообщение от Riim (Сообщение 339304)
> Но вместо udef принято использовать null

если в поле будет лежать примитивное значение, я использую undef, если не примитивное - null.

С null просто удобнее :)

var foo = {
    /** @type {?string} */
    bar: null
};



var foo = {
    /** @type {(string|undefined)} */
    bar: void 0
};

Riim 06.11.2014 21:00

Разве не достаточно просто /** @type {string} */ ?
Например на этой странице http://usejsdoc.org/tags-type.html :
/** @type {(string|Array.)} */
var foo;

kobezzza 06.11.2014 21:06

Ну я просто использую диалект от GCC, там обязательно точно указывать все возможные типы.


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