js 内置函数filter()能传参数进去吗

JavaScript012

js 内置函数filter()能传参数进去吗,第1张

请问你说的是Array的filter函数吗?Array的filter原生实现是只能传递一个方法。

使用方式如下

语法

var new_array = arr.filter(callback[, thisArg])

参数

callback

用来测试数组的每个元素的函数。调用时使用参数 (element, index, array)。

返回true表示保留该元素(通过测试),false则不保留。

thisArg

可选。执行 callback 时的用于 this 的值。

返回值

一个新的通过测试的元素的集合的数组

如果需要修改传入的function,可以使用javascript的bind函数修改,例如以下例子:

var call = function(element,index,array){ console.log(arguments)}

undefined

[1,2,3].filter(call)

VM637:1 Arguments(3) [1, 0, Array(3), callee: ƒ, Symbol(Symbol.iterator): ƒ]

VM637:1 Arguments(3) [2, 1, Array(3), callee: ƒ, Symbol(Symbol.iterator): ƒ]

VM637:1 Arguments(3) [3, 2, Array(3), callee: ƒ, Symbol(Symbol.iterator): ƒ]

[]

//通过bind函数将call的参数列表之前增加一个字符串'a'

[1,2,3].filter(call.bind(null,'a'))

VM637:1 Arguments(4) ["a", 1, 0, Array(3), callee: ƒ, Symbol(Symbol.iterator): ƒ]

VM637:1 Arguments(4) ["a", 2, 1, Array(3), callee: ƒ, Symbol(Symbol.iterator): ƒ]

VM637:1 Arguments(4) ["a", 3, 2, Array(3), callee: ƒ, Symbol(Symbol.iterator): ƒ]

[]

prompt() 方法用于显示可提示用户进行输入的对话框。

<html>

<head>

<script type="text/javascript">

function disp_prompt()

  {

  var name=prompt("Please enter your name","")

  if (name!=null && name!="")

    {

    document.write("Hello " + name + "!")

    }

  }

</script>

</head>

<body>

<input type="button" onclick="disp_prompt()"

value="Display a prompt box" />

</body>

</html>

var obj = function() {

this.a = function(arg){alert(arg)}

this.b = function(arg){alert(arg+1)}

}

var fn = new obj

fn.a('TEST')