当两者都是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
答案 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;对于大多数类型的对象(Date
,RegExp
,Math
),但对于函数,它会更进一步,并告诉你&#34; function&#34;。我在typeof
及其亲戚的一篇文章中深入探讨了我的贫血小博客上的帖子:Say what?
答案 1 :(得分:0)
在Javascript中,我们将函数视为我们在程序中调用的对象。对象不是您假设的函数,因为此对象是父对象,并且每个函数都是对象的子对象。
var speak = function(what){
console.log(this);
}
speak("woof");
function test(){
var a=1;
}