2016-01-01 2 views
0

Я просматриваю несколько слайдов при разработке SPA с использованием Durandal и другой библиотеки javascript.Основы каркаса durandal

У меня есть несколько вопросов:

define('projects', [], 
    function() { 


     var Projects = function() { 
      this.myDataLocal = ko.observable(); 
      this.myDataFromServices = null; 
     }; 

     Projects.prototype.activate = function (activationData) { 
      this.myDataFromServices = activationData 
      this.myDataLocal(activationData()); 
     }; 
    Projects.prototype.detached = function() { 
      this.myDataFromServices(this.myDataLocal()); 
     }; 

     return Projects; 
    } 
); 

а. В приведенном выше кодексе указан

var Projects = function() { 

     }; 

a конструктор?

b. Когда мы добавляем функцию прототип,

Projects.prototype.activate = function (activationData) { 
} 

будет это также рассматриваться как конструктор и выполняется автоматически на функции нагрузки?

c. Чтобы квалифицировать функцию для конструктора, достаточно ли этого, если мы определяем имя так же, как это?

var ProjectsSample100 = function() { 

} 

ответ

1

A) Не совсем точно. Хотя объект «Проекты» создан.

B) Это не конструктор. Это назначает функцию свойству на прототипе объекта Projects. В частности, в Durandal, когда загружена модель просмотра, Дюрандал будет проверять существование функции «активировать» на viewmodel. Если ни один не присутствует, он использует функцию по умолчанию, но в этом случае мы явно установили поведение активации.

Подробнее о том, что этапах модель представление проходит в Дюрандал здесь: http://durandaljs.com/documentation/Hooking-Lifecycle-Callbacks.html

C) Нет, это просто объект получения определен.

Типичный конструктор выглядит следующим образом:

function person(first, last, age, eye) { 
    this.firstName = first; 
    this.lastName = last; 
    this.age = age; 
    this.eyeColor = eye; 
} 
var myFather = new person("John", "Doe", 50, "blue"); 
var myMother = new person("Sally", "Rally", 48, "green"); 

Обратите внимание на использование «это» назначить «полей» на объекте, а также использование «новых» для создания новых экземпляров с помощью этого конструктора.

Я украл этот пример отсюда: http://www.w3schools.com/js/js_object_definition.asp