Типы расширения JavaScript возвращают

Я на самом деле изучаю Javascript Крокфорда : хорошие части . Я новичок в JavaScript, поэтому мне трудно понять, как работает этот код:

Function.prototype.method = function (name, func) {
    this.prototype[name] = func;
    return this;
};

Вот что я думаю:

Будучи методом (функцией внутри объекта), this указывает на объект Function , но зачем нужно возвращать объект, если у меня есть доступ к нему изнутри метода? Если я прав, этот является ссылкой, а не локальной копией, поэтому:

Function.prototype.method = function (name, func) {
    this.prototype[name] = func;
};

Также должно работать.

С другой стороны, в JavaScript функция без оператора return возвращает ] undefined и назначьте его Function.prototype.method .

Вопрос

Какой смысл возвращать этот ?


Рабочий пример №1

Function.prototype.method = function (name, func) {
    this.prototype[name] = func;
    return this;
};
var add = function(a, b) {
    return a+b;
};

Function.method('add', add);
var f = function() {};

print(f.add(1,2));

Number.method('integer', function () {
        return Math[this < 0 ? 'ceil' : 'floor'](this);
        });

print((-10/3).integer());

Вывод:

-3

С другой стороны, в JavaScript функция без оператора return возвращает undefined и присваивает его Function.prototype.method .

Вопрос

Какой смысл возвращать этот ?


Рабочий пример №1

Function.prototype.method = function (name, func) {
    this.prototype[name] = func;
    return this;
};
var add = function(a, b) {
    return a+b;
};

Function.method('add', add);
var f = function() {};

print(f.add(1,2));

Number.method('integer', function () {
        return Math[this < 0 ? 'ceil' : 'floor'](this);
        });

print((-10/3).integer());

Вывод:

-3

С другой стороны, в JavaScript функция без оператора return возвращает undefined и присваивает его Function.prototype.method .

Вопрос

Какой смысл возвращать этот ?


Рабочий пример №1

Function.prototype.method = function (name, func) {
    this.prototype[name] = func;
    return this;
};
var add = function(a, b) {
    return a+b;
};

Function.method('add', add);
var f = function() {};

print(f.add(1,2));

Number.method('integer', function () {
        return Math[this < 0 ? 'ceil' : 'floor'](this);
        });

print((-10/3).integer());

Вывод:

-3 3


Рабочий пример # 2

Function.prototype.method = function (name, func) {
    this.prototype[name] = func;
};

var add = function(a, b) {
    return a+b;
};

Function.method('add', add);
var f = function() {};

print(f.add(1,2));

Number.method('integer', function () {
        return Math[this < 0 ? 'ceil' : 'floor'](this);
        });

print((-10/3).integer());

Вывод:

-3 3

7
задан Kevin Brown 20 February 2015 в 02:07
поделиться