Преобразование USB веб-камеры JPEG в байтовый поток - Python

function Foo() {
  this.bar = 0;
  this.getBar = function () { return this.bar };
}

Когда вы вызываете функцию выше с ключевым словом new - вот так ...

var foo = new Foo();

... - происходит несколько вещей:

1) создается объект. 2) функция выполняется с ключевым словом this, ссылающимся на этот объект. 3) этот объект возвращается.

foo, затем становится этим объектом:

{
    bar: 0,
    getBar: function () { return this.bar; }
};

Почему бы не тогда просто сделать это:

var foo = {
    bar: 0,
    getBar: function () { return this.bar; }
};

Вы бы, если это просто один простой объект.

Но создание объекта с конструктором (так оно называется) дает нам большое преимущество в создании нескольких «одинаковых» объектов.

См. в javascript все функции создаются с использованием свойства prototype [object], и все объекты, созданные с помощью этой функции (путем вызова его с новым ключевым словом), связаны с этим прототипом. Вот почему это так здорово - вы можете хранить все распространенные методы (и свойства, если хотите) в объекте прототипа, и сэкономить много памяти. Вот как это работает:

function Foo( bar, bob ) {
   this.bar = bar;
   this.bob = bob;
}

Foo.prototype.calculate = function () {
  // 'this' points not to the 'prototype' object 
  // as you could've expect, but to the objects
  // created by calling Foo with the new keyword.
  // This is what makes it work.
  return this.bar - this.bob;  
};

var foo1 = new Foo(9, 5);
var foo2 = new Foo(13, 3);
var result1 = foo1.calculate();
var result2 = foo2.calculate();

console.log(result1); //logs 4
console.log(result2); //logs 10

Вот и все!

0
задан Raulp 11 March 2019 в 13:50
поделиться