Функции добавления Javascript - PullRequest
2 голосов
/ 28 января 2012

Чтобы добавить функцию к объекту, я пишу ее внутри нее так: AddX:

function Foo()
{
    this.x = 1;

    this.AddX = function(y)
    {
      this.x += y;
    }

}

Но я обнаружил, что другим способом может быть использование prototype:

function Foo()
{
    this.x = 1;
}

Foo.prototype.AddX = function(y)
{
    this.x += y;
}

Использование:

obj = new Foo;
obj.AddX(5);
alert(obj.x);

Результат одинаков в обоих случаях.Какой маршрут лучше или есть какая-то разница между ними?Есть ли проблемы с производительностью?

Ответы [ 3 ]

3 голосов
/ 28 января 2012

В вашем первом подходе addX - это метод экземпляра.Таким образом, каждый экземпляр Foo будет иметь свою собственную копию addX.

. При втором подходе addX добавляется к prototype, и каждый экземпляр Foo разделяет одно и то же.prorotype.

Таким образом, второй подход сэкономит больше памяти.Если у вас есть большое количество создаваемых экземпляров, вам лучше использовать второй подход.

1 голос
/ 28 января 2012

в вашем примере нет разницы между ними обоими но вы можете использовать свойство prototype для добавления функций в JavaScript, встроенные в объекты, такие как Date, String и т. д. *

1 голос
/ 28 января 2012

Прототип используется для добавления функций, которые отражаются во всех экземплярах функции.

Например:

//First, create the custom object "circle"
function circle(){
}
circle.prototype.pi=3.14159

Взяты отсюда

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...