我正在学习JavaScript。大多数材料说JavaScript只有3种基本类型:Number,Boolean,String和2个特殊原始值:null,undefined。其他一切都是对象类型,包括数组,函数,reg表达式。
我可以很容易地想象数组是某种特殊对象,但为什么函数也是对象类型?对象和功能之间没有任何相似之处。如何实现一个像函数一样工作的特殊对象?我不知道。
答案 0 :(得分:0)
无法像函数一样实现对象,但可以将函数用作对象。
var a = function(){}
a.x = 5;
console.log(a.x);
一切都是这样的对象的原因只是一种设计选择,对某些人来说,被认为是优雅的。我特别不同意,但总的来说,人们不同意这些事情。
另外,我应该注意到,可能正在做的一点是JS函数是一流的。这意味着你可以使用像你可以使用任何其他值的函数,包括将它们作为参数发送到其他函数并从函数返回函数等等。以下示例:
// return functions from function
function create_a_function_that_doubles_numbers(){
return function(a){ return a*2; }
}
var double_number = create_a_function_that_doubles_numbers();
console.log(double_number(5)); // 10
// sending a function to a function
function call_twice(f){
f(); f();
};
function shout(){
alert("HEY");
};
call(shout);
// Here we send "shout" to "call_twice" which... calls it twice,
// so a "HEY" popup appears two times.