__proto__ VS. прототип в JavaScript

Лучшим способом обработки дат в knockoutjs является использование библиотеки времени и обработки дат типа босса. Вы можете легко иметь дело с датами типа / Date (-62135578800000) /. Нет необходимости беспокоиться о том, как дата сериализации в контроллере.

function jsonToDate(date,format) {
   return moment(date).format(format);
}

использовать его как

var formattedDate = jsonToDate(date,'MM/DD/YYYY')

momentjs поддерживает множество форматов времени дат и функции полезности в датах.

708
задан RienNeVaPlu͢s 11 February 2019 в 16:42
поделиться

2 ответа

Как это справедливо указало

__proto__, фактический объект, который используется в цепочке поиска для разрешения методов, и т.д. прототип является объектом, который используется для создания __proto__, когда Вы создаете объект с новым:

( new Foo ).__proto__ === Foo.prototype;
( new Foo ).prototype === undefined;

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

, Если мы изменяем ячейку памяти , прототип из функции конструктора, __proto__ из производного объекта все еще продолжит указывать на исходное адресное пространство. Поэтому для предоставления доступа к общей собственности доступной вниз цепочка наследования всегда добавляйте свойство к прототипу функции конструктора , вместо того, чтобы повторно инициализировать его (который изменил бы его адрес памяти).

Рассматривают следующий пример:

function Human(){
    this.speed = 25;
}

var himansh = new Human();

Human.prototype.showSpeed = function(){
    return this.speed;
}

himansh.__proto__ === Human.prototype;  //true
himansh.showSpeed();    //25

//now re-initialzing the Human.prototype aka changing its memory location
Human.prototype = {lhs: 2, rhs:3}

//himansh.__proto__ will still continue to point towards the same original memory location. 

himansh.__proto__ === Human.prototype;  //false
himansh.showSpeed();    //25
0
ответ дан 22 November 2019 в 21:30
поделиться

Существует только один объект, который используется для объединения в цепочку protypal. Этот объект, очевидно, имеет имя и значение: __proto__ его имя, и prototype его значение. Это - все.

для создания еще легче схватить посмотрите на схему на верхней части этого сообщения (Схема dmitry soshnikov), Вы никогда не будете находить __proto__ точки к чему-то еще кроме prototype как его значение.

суть - это: __proto__ имя, которое ссылается на объект prototypal, и prototype фактический объект prototypal.

Это похоже на высказывание:

var x = {name: 'john'};

x имя объекта (указатель), и {name: 'john'} фактический объект (значение данных).

ПРИМЕЧАНИЕ: это просто в широком масштабе упрощенная подсказка о том, как они связаны на высоком уровне.

0
ответ дан 22 November 2019 в 21:30
поделиться
Другие вопросы по тегам:

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