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

时间:2016-01-14 15:39:53

标签: 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

2 个答案:

答案 0 :(得分: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`

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

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

typeof是一个非常原始的操作员,我很害怕。它会给你一个&#34;对象&#34;对于大多数类型的对象(DateRegExpMath),但对于函数,它会更进一步,并告诉你&#34; function&#34;。我在typeof及其亲戚的一篇文章中深入探讨了我的贫血小博客上的帖子:Say what?

答案 1 :(得分:0)

在Javascript中,我们将函数视为我们在程序中调用的对象。对象不是您假设的函数,因为此对象是父对象,并且每个函数都是对象的子对象。

var speak = function(what){
    console.log(this);

}

speak("woof");

function test(){
    var a=1;
}