javascript中对象和函数之间的区别

Man*_*ant 2 javascript

当两者都是instanceof对象时,javascript中对象和函数之间的确切区别是什么?

var obj = {};
function t(){}

console.log(obj instanceof Object); //true
console.log(t instanceof Object);   //true

console.log(typeof obj); //object
console.log(typeof t);   //function
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 5

函数是一个对象,可以被调用.

var obj = {};
function t(){}

console.log(obj instanceof Function); // false
console.log(t instanceof Function);   // true

t();   // Works
obj(); // Fails because you can't call non-functions (specifically,
       // the error is `TypeError: obj is not a function`
Run Code Online (Sandbox Code Playgroud)

在JavaScript中,所有函数都是对象(就像所有Date对象都是对象一样),instanceof Object除非用null原型创建所有对象,否则它们都是对象:

function t(){}
var d = new Date();
console.log(t instanceof Object);                    // true
console.log(d instanceof Object);                    // true
var objWithNullPrototype = Object.create(null);
console.log(typeof objWithNullPrototype);            // "object"
console.log(objWithNullPrototype instanceof Object); // false
Run Code Online (Sandbox Code Playgroud)

typeof我很害怕,这是一个非常原始的运营商.它会给你对于大多数类型的对象只是"对象"( ,Date,RegExp),Math但它的功能是去远一点,告诉你"功能".我typeof在贫穷的小博客的帖子中深入探讨了它的亲戚:说什么?