【问题标题】:difference between object and function in javascript [duplicate]javascript中对象和函数之间的区别[重复]
【发布时间】:2016-04-20 00:22:38
【问题描述】:

当两者都是instanceof Object时,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

【问题讨论】:

  • 一个函数就是一个对象。所有对象都是对象的实例,即。数组,正则表达式,...
  • 函数可以返回结果。
  • @leguano 和对象不能? :)

标签: javascript


【解决方案1】:

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

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 原型创建的:

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 恐怕是一个非常原始的运算符。对于大多数类型的对象(DateRegExpMath),它只会为您提供“对象”,但对于函数,它会更进一步并告诉您“函数”。我在我贫血的小博客上的一篇文章中深入探讨了typeof 及其亲属:Say what?

【讨论】:

  • 您好,感谢您的解释...
【解决方案2】:

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

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

}

speak("woof");

function test(){
    var a=1;
}

【讨论】:

    猜你喜欢
    • 2018-03-15
    • 2015-12-16
    • 2013-01-10
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    相关资源
    最近更新 更多