相关疑难解决方法(0)

如何在Array.prototype和Object.prototype上的javascript中定义方法,以便它不会出现在for循环中

我想在Array.prototype和Object.prototype上定义辅助方法.我目前的计划是做类似的事情:

Array.prototype.find = function(testFun) {
   // code to find element in array
};
Run Code Online (Sandbox Code Playgroud)

所以我可以这样做:

var arr = [1, 2, 3];
var found = arr.find(function(el) { return el > 2; });
Run Code Online (Sandbox Code Playgroud)

它工作正常,但如果我在循环中循环数组,for in方法显示为值:

for (var prop in arr) { console.log(prop); }
// prints out:
// 1
// 2
// 3
// find
Run Code Online (Sandbox Code Playgroud)

这将搞砸任何依赖于for in显示值的人(尤其是对象).更高版本的javascript具有内置于数组中的.map和.filter函数,但这些函数不会出现在for in循环中.如何创建更多不会出现在for in循环中的方法?

javascript function

12
推荐指数
2
解决办法
9907
查看次数

绑定它或使用变量更好吗?

这样做更好吗

asset.addEventListener("load", function () {
  this.emit({
    type: "load",
    asset: asset
  });
}.bind(this), false);
Run Code Online (Sandbox Code Playgroud)

要么

var scope = this;

asset.addEventListener("load", function () {
  scope.emit({
    type: "load",
    asset: asset
  });
}, false);
Run Code Online (Sandbox Code Playgroud)

绑定函数或仅将引用存储this在变量中是否更好?

javascript

9
推荐指数
1
解决办法
1267
查看次数

如何在"for..in"循环中从处理中排除添加到Array方法?(JavaScript的)

我添加了一些有用的助手Array(比如toSource()Opera).现在for..in返回具有普通属性的函数.

我现在正在使用for..in,因为代码更易于阅读.它是js的原生功能,因此必须更快.

但是在循环中添加类型检查可以更容易地使用经典for(;;).

有没有什么方法可以避免for..in枚举函数?

跨浏览器工作不是很必要(必须在Opera中工作),但速度很重要.

谢谢.


编辑:
有没有能力避免for..in任何对象的枚举函数或自定义属性?

javascript opera prototypejs

2
推荐指数
1
解决办法
973
查看次数

标签 统计

javascript ×3

function ×1

opera ×1

prototypejs ×1