У меня был похожий вопрос, когда я создавал свое приложение ASP.NET MVC. В основном ответ заключается в том, что JavaScript не имеет того же понятия типов, что и в C #.
Допустим, вы решили использовать JSON для передачи данных между вашим клиентом и сервером в вашем приложении. Выбор формата JSON, XML, YAML или другого формата не важен.
Серверная сторона
На вашей стороне сервера, в вашем коде C #, вы можете сделать что-то вроде этого (при условии, что вы используете какую-то библиотеку JSON):
var myLinkedList = JsonConvert.DeserializeObject<LinkedList>(json);
Теперь у вас есть переменная myLinkedList типа LinkedList. myLinkedList теперь ведет себя как все экземпляры LinkedList.
Клиентская сторона
Однако на клиентском сайте, в вашем коде JavaScript, вы, вероятно, делаете что-то вроде этого:
function LinkedList(){
//Constructor for your LinkedList
};
LinkedList.prototype = {
//Various functions to operate on your linked list
};
Вам нужно написать что-то подобное для десериализации данных, которые возвращаются с сервера:
var linkedList = JSON.parse(jsonString);
Обратите внимание, что НЕТ ПУТИ, чтобы указать, что вы хотите, чтобы эти десериализованные данные вошли в "класс" LinkedList, который вы определили ранее. JavaScript не понимает, что LinkedList - это «класс», в который вы добавили функциональность при использовании прототипа.
То, что вы получаете, является объектом JavaScript.
Один из способов обойти это - сделать что-то вроде этого:
var linkedList = new LinkedList();
var deserializedObject = JSON.parse(jsonString);
linkedList.Items = deserializedObject.Items;
По сути, вам нужно будет скопировать все состояние из десериализованного объекта в переменную связанного списка.