做项目需要提供接收接口和输出接口
步骤:
接收其他代码,保存接收代码,再去执行,执行返回结果
函数信息:
function happy(){
console.log("happy");
};
接收函数:
//创建数组,把所有接收的函数信息以数组方式保存着:
var arr = [];
//创建函数,负责接收信息。:
funciton add(n){
arr.push(n); //arr.push()在数组末尾添加一个元素。传到数组的方括号[]里。
};
add(happy); //以参数方式传入到数组方法里。
注意: add(happy); 和 add(happy()); 有区别,如下代码:
<script>
function happy(){
console.log("Hello");
}
var arr = []; // 创建数组
function add(n){
arr.push(n);
}
add(happy());
add(happy);
add(happy);
console.log(arr);
</script>
运行结果:


总结:
-
add(happy); 中 happy 把整个函数代入数组里;
add(happy()); 中 happy() 执行函数,直到函数无法执行,返回结果到数组里。在数组的元素中出现 undefined,是因为 happy() 函数执行完后,函数会默认给我们返回 undefined。 -
js的数组是无类型的:数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的类型。数组的元素可以是对象或其他数组,这样就可以创建复杂的数据结构。
通常我们可以用一元运算符typeof来判断js的数据类型,但是对于数组这样一个特殊的对象却只能返回"object"。
关于JS数据类型、数组判断,参考:http://www.cnblogs.com/mofish/p/3388427.html
同步执行函数
//执行函数:
goIn(); //调用函数
function goIn(){
for(var i = 0; i<arr.length;i++){
arr.pop()(); //arr.pop() 数组最后一个元素删除。
};
};
使用对象完整包装接收函数和执行函数:
<script>
//对象包装:
function happy(){
console.log("happy!");
};
var work = new Object();
work.arr = [];
work.goIn = function (){
for(var i = 0;i < work.arr.length; i++){
(work.arr[i])() //也可以编写:work.arr.pop()();
};
};
work.add = function(n){
work.arr.push(n);
};
work.add(happy);
work.add(happy);
work.add(happy);
work.add(happy);
work.goIn()
timename=setInterval("work.goIn();",5*1000);
</script>
解析: 如上代码中 work.arr.pop()(); 是什么意思?
- work 对象名称;
- 实点号(.)对象分支;
- arr是数组,在对象代码中已有定义work.arr = [];
- 数组有很多种方法,如:
push()向Array的末尾添加若干元素,pop()则把Array的最后一个元素删除掉。
编写方式:arr.pop();
关于更多数组方法,参考MDN链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array - () 执行意思。
work.arr.pop()();相当于如下代码:
var tmp = work.arr.pop();
tmp();
这篇博客探讨了在JavaScript项目中如何提供接收接口和输出接口。文章详细阐述了接收函数的区别,例如`add(happy)`与`add(happy())`,并解释了JavaScript数组的特性和类型判断。此外,还介绍了同步执行函数的概念,并展示了如何使用对象完全包装接收和执行函数。
2142

被折叠的 条评论
为什么被折叠?



