我试图学习如何在Javascript中创建原型,但是Array原型让我很困惑。我有一个数字数组,作为字符串存储在数组中,我想转换整个数组,因此它们是实际的数字。我如何准确地执行此操作以激活此原型?
答案 0 :(得分:1)
我不确定你想如何使用原型。但是从字符串数组中获取数字数组的简单方法是:
var numArray = strArray.map(parseFloat);
对于不支持ECMAScript 5的浏览器,您可以从MDC获得地图的后备实现。
答案 1 :(得分:0)
prototype
对象 prototype
对象的想法是它是一个对象,该类型的所有新对象都将关闭它们的方法和属性。通过添加prototype
预定义对象(例如Array
或String
),无论何时创建该类型的新对象,您为其定义的所有方法和属性都是{ {1}}将被复制到新对象。
为此,您只需按照符号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()
。