如何在Javascript中创建原型?

时间:2010-10-02 02:33:28

标签: javascript prototype

我试图学习如何在Javascript中创建原型,但是Array原型让我很困惑。我有一个数字数组,作为字符串存储在数组中,我想转换整个数组,因此它们是实际的数字。我如何准确地执行此操作以激活此原型?

2 个答案:

答案 0 :(得分:1)

我不确定你想如何使用原型。但是从字符串数组中获取数字数组的简单方法是:

var numArray = strArray.map(parseFloat);

对于不支持ECMAScript 5的浏览器,您可以从MDC获得地图的后备实现。

答案 1 :(得分:0)

prototype对象

prototype对象的想法是它是一个对象,该类型的所有新对象都将关闭它们的方法和属性。通过添加prototype预定义对象(例如ArrayString),无论何时创建该类型的新对象,您为其定义的所有方法和属性都是{ {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()