js prototype 属性使用问题_1
程序员文章站
2022-07-06 15:41:00
...
用 prototype 属性提供对象的类的一组基本功能。 对象的新实例“继承”赋予该对象原型的操作。
注意,这里有一个陷阱。向 Array 原型添加扩展方法后,当使用 for - in 循环数组时,这个扩展方法也会被循环出来。
下面的代码说明这一点(假设已经向 Array 的原型中扩展了 min 方法):
// 向 javascript 固有类型 Array 扩展一个获得最小值的方法 Array.prototype.min = function() { var min = this[0]; for (var i = 1; i < this.length; i++) { if (this[i] < min) { min = this[i]; } } return min; } // 在任意 Array 的实例上调用 min 方法 console.log([1, 23, 47, -1, 0].min()); // -1
注意,这里有一个陷阱。向 Array 原型添加扩展方法后,当使用 for - in 循环数组时,这个扩展方法也会被循环出来。
下面的代码说明这一点(假设已经向 Array 的原型中扩展了 min 方法):
var arr = [1, 23, 47, -1, 0]; var total = 0; for (var i in arr) { total += parseInt(arr[i], 10); } console.log(total); // NaN // 可用下面的方法解决 var arr = [1, 23, 47, -1, 0]; var total = 0; for (var i in arr) { if (arr.hasOwnProperty(i)) { total += parseInt(arr[i], 10); } } console.log(total); // 70
推荐阅读
-
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
-
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
-
Node.js系列之安装配置与基本使用(1)
-
使用CSS3的box-sizing属性解决div宽高被内边距撑开的问题
-
android TextView多行文本(超过3行)使用ellipsize属性无效问题的解决方法
-
使用vue打包时vendor文件过大或者是app.js文件很大的问题
-
windows下关于sublime text2,HTML/CSS/JS Prettify插件使用路径问题处理
-
JSP使用ajaxFileUpload.js实现跨域问题
-
JS双向链表实现与使用方法示例(增加一个previous属性实现)
-
JS中使用cavas截图网页并解决跨域及模糊问题