//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]
2条答案
按热度按时间9rnv2umw1#
我不确定你到底想如何使用原型。但是从字符串数组中获取数字数组的简单方法是:
对于不支持ECMAScript 5的浏览器,您可以从MDC获取map的回退实现。
a64a0gku2#
prototype
对象prototype
对象的思想是,它是一个对象,所有该类型的新对象都将获得其方法和属性。通过添加到预定义对象的prototype
,例如Array
或String
,每当创建该类型的新对象时,所有你定义的prototype
的方法和属性都将被复制到新对象中。怎么做?
要做到这一点,你只需遵循符号
Object.prototype.myProperty = value
,所以在你的情况下,你想添加一个方法,将整个字符串数组转换为数字,这里有一个简单的例子,你会怎么做:示例
还有什么需要注意的?
可以说,对本机对象进行原型设计的最大危险是有可能与其他第三方代码发生冲突,特别是在使用相对常见的方法(如
Array.prototype.empty()
)扩展本机对象时。在对本机对象进行原型设计时要考虑到这一点,特别是在命名方法和属性时。如果您认为有可能发生冲突,请考虑为方法添加前缀。所以使用Array.prototype.mylibEmpty()
代替。