Библиотека Semver дает мне недопустимую версию для 0.0.001

Как говорили другие, первая версия, используя «this», приводит к каждому экземпляру класса A, имеющему собственную независимую копию метода функции «x». Принимая во внимание, что использование «прототипа» будет означать, что каждый экземпляр класса A будет использовать одну и ту же копию метода «x».

Вот некоторый код, чтобы показать эту тонкую разницу:

// x is a method assigned to the object using "this"
var A = function () {
    this.x = function () { alert('A'); };
};
A.prototype.updateX = function( value ) {
    this.x = function() { alert( value ); }
};

var a1 = new A();
var a2 = new A();
a1.x();  // Displays 'A'
a2.x();  // Also displays 'A'
a1.updateX('Z');
a1.x();  // Displays 'Z'
a2.x();  // Still displays 'A'

// Here x is a method assigned to the object using "prototype"
var B = function () { };
B.prototype.x = function () { alert('B'); };

B.prototype.updateX = function( value ) {
    B.prototype.x = function() { alert( value ); }
}

var b1 = new B();
var b2 = new B();
b1.x();  // Displays 'B'
b2.x();  // Also displays 'B'
b1.updateX('Y');
b1.x();  // Displays 'Y'
b2.x();  // Also displays 'Y' because by using prototype we have changed it for all instances

Как отмечали другие, существуют разные причины выбора одного или другого метода. Мой образец просто предназначен, чтобы четко продемонстрировать разницу.

-1
задан Olegzandr Denman 14 July 2018 в 02:07
поделиться

2 ответа

Недопустимая версия. Это должно быть 0.0.1.

Если вам нужны три цифры для вашей ревизии, вы можете использовать их позже ... после появления 0.0.9 0.0.10. После появления 0.0.99 0.0.100 и т. Д.

2
ответ дан Brad 17 August 2018 в 12:03
поделиться

Это глупо, но я думаю, что так работает semver.

Это неверно:

let oldestVersion = '0.0.001';

, но это верно:

let oldestVersion = '0.0.1001';
-1
ответ дан Olegzandr Denman 17 August 2018 в 12:03
поделиться
  • 1
    Что заставляет вас думать, что это глупо? Это имеет смысл. Если вам не нравится эта схема управления версиями, не используйте semver. – Brad 14 July 2018 в 02:13
  • 2
    этот ответ правильный Брэд, я выберу критику полукруга. Хотя ответ на критику не всегда «если вам не нравится, не используйте его». – Olegzandr Denman 14 July 2018 в 02:14
  • 3
    Почему нет? Существует множество возможностей, которые вы можете использовать для управления версиями. Это довольно просто. Если вам это не нравится, используйте другой. Вы жалуетесь на ключевой аспект этой схемы. – Brad 14 July 2018 в 02:15
  • 4
    NPM использует semver, я как бы застрял с ним atm – Olegzandr Denman 14 July 2018 в 03:28
Другие вопросы по тегам:

Похожие вопросы: