Как мне создать прототипы в Javascript? - PullRequest
0 голосов
/ 02 октября 2010

Я пытался научиться создавать прототипы в Javascript, но прототип Array меня смущает.У меня есть массив номеров, которые хранятся в массиве как строки, и я хочу преобразовать весь массив, чтобы они были действительными числами.Как мне сделать это именно то, что я набрал бы, чтобы активировать этот прототип?

Ответы [ 2 ]

1 голос
/ 02 октября 2010

Я не уверен, как именно вы хотите использовать прототипы.Но простой способ получить массив чисел из массива строк:

var numArray = strArray.map(parseFloat);

Для браузеров, которые не поддерживают ECMAScript 5, вы можете получить запасную реализацию map из MDC .

0 голосов
/ 02 октября 2010

Объект prototype

Идея объекта prototype состоит в том, что это объект, от которого все новые объекты этого типа отключат свои методы и свойства. Добавляя к prototype предопределенного объекта, такого как Array или String, всякий раз, когда создается новый объект этого типа, все методы и свойства, которые вы определили для его prototype, будут скопированы в новый объект.

Как мне это сделать?

Чтобы сделать это, вы просто следуете обозначению Object.prototype.myProperty = value, поэтому в вашем случае вы хотите добавить метод, который преобразует весь массив строк в числа, вот простой пример того, как вы это сделаете:

Пример

//So here, you see the definition of your new method
//Note the use of the 'Object.prototype.property = value' notation
Array.prototype.stringsToNumbers = function()
    { //I use the Whitesmiths indentation style, get over it :p

    //To refer to the object which the method was called on use the
    //'this' keyword.
    for (index in this)
        {
        if (typeof(this[index]) === 'string') //Always typecheck... Always.
            {
            this[index] = parseFloat(this[index]);
            }
        }

    //Sometimes you want to return the object to allow for chaining.
    return this;
    }

//You would then use it like this:
var myArray = ["23","11","42"];
myArray.stringsToNumbers();
//myArray now contains [23,11,42]

Что еще я должен знать?

Возможно, наибольшая опасность создания прототипов собственных объектов заключается в том, что существует вероятность столкновения с кодом стороннего производителя, особенно при расширении собственных объектов относительно распространенными методами, такими как Array.prototype.empty(). Примите это во внимание при создании прототипов собственных объектов, особенно с именами ваших методов и свойств. Подумайте о добавлении префикса к методу, если вы считаете, что существует вероятность столкновения, поэтому вместо него используйте Array.prototype.mylibEmpty().

...