Объект 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()
.