功能基本上是对象类型怎么可能?

时间:2014-04-30 03:00:33

标签: javascript

我正在学习JavaScript。大多数材料说JavaScript只有3种基本类型:Number,Boolean,String和2个特殊原始值:null,undefined。其他一切都是对象类型,包括数组,函数,reg表达式。

我可以很容易地想象数组是某种特殊对象,但为什么函数也是对象类型?对象和功能之间没有任何相似之处。如何实现一个像函数一样工作的特殊对象?我不知道。

1 个答案:

答案 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.