2016-06-24 5 views
0


У меня есть функция, которая заполняет массив ...
Я хочу, чтобы использовать его как этот arrayname.fill("First Array");
Но не так, как это arrayname = fill("First Array");
Как я могу это сделать?
Js Функция Вызов другим способом

function fill(name) 
{ 
    var array = []; 
    for(var i = 0;i < 3;i++) 
    { 
     array[i] = prompt(name + "\nFill it"); 
    } 
    return array; 
} 
+0

Ваша функция создает * новый * массив с тремя элементами и возвращает его. Как вы ожидаете, что он будет работать, если вы назовете его как метод в существующем массиве - должны ли он просто сделать 3 элемента, как в вашей функции, или перезаписать все существующие элементы или ...? Кроме того, я бы не рекомендовал добавлять метод под названием '.fill()' в прототип массива, учитывая, что в массивах JavaScript уже есть встроенный метод '.fill()' (https://developer.mozilla.org/ ru/docs/Web/JavaScript/Reference/Global_Objects/Array/fill) (и ваша функция работает не так). – nnnnnn

+0

Могу ли я спросить, почему вам нужно использовать его таким образом? И как указывает @nnnnnn, у JS уже есть '.fill()', который будет перезаписан вашей функцией, это, скорее всего, сломается где-нибудь еще в вашем скрипте, где ожидается стандартный '.fill()'. – DBS

ответ

1
Array.prototype.fill = function fill(name) 
{ 
    var array = []; 
    for(var i = 0;i < 3;i++) 
    { 
     array[i] = prompt(name + "\nFill it"); 
    } 
    return array; 
} 
0

Чтобы сделать это, необходимо добавить функцию к прототипу Array объекта (но не рекомендуется):

Array.prototype.fill = function(name) { 
    var array = []; 
     for(var i = 0;i < 3;i++) { 
     array[i] = prompt(name + "\nFill it"); 
     } 
    return array; 
} 
0
Array.prototype.fill = function(name) { 
     for(var i = 0;i < 3;i++) 
     { 
     this[i] = prompt(name + "\nFill it"); 
     } 
    return this; 
} 

Я просто изменил массив name to this ... и удалил строку var array = [];
После этого все работает, как мне нужно, спасибо всем !!!