JavaScript----对象和函数的关系

本文探讨JavaScript中函数和对象的复杂关系。虽然函数是对象,可以通过`instanceof`进行判断,但它们之间不是简单的包含关系。函数可以创建对象,如通过`new Array()`或`new Object()`,这种写法本质上是调用了函数。JavaScript中,所有对象都是由函数创建的,而函数本身又是对象,这种关系类似鸡生蛋、蛋生鸡的问题。要理解这一概念,需要进一步了解`prototype`原型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

理解对象中说明了函数是对象,因为可以用 instanceof函数来判断。所以函数是一种对象,但是函数又有特殊的地方。数组是对象的一个子集,属于包含关系,但是对象和函数之间的关系有点复杂,对象和函数的关系类似于鸡生蛋,蛋生鸡的关系。
例子:

function Person(name,age){
    this.name = name,
    this.age = age
}
var person = new Person("asdf",18);
console.log(person);//   Person {age: "asdf", name: 18}

这个例子说明了一点:函数可以创建对象
也许有人就会说:不对!!!。因为

var obj = {
    name = "yfh",
    age = 18,
}
var arr = [10,"t",true]

这样的写法不也是能创建一个对象吗。但其实这只是一种“快捷方式”,又名“语法糖”。以上代码本质为:

    var obj = new Object();
        obj.name = "yfh";
        obj.age = 18;
    var arr = new Array();
        arr[0] = 5;
        arr[1] = "t";
        arr[2] = true;

代码中的Array、Object都为函数,也许还有人不相信,可以检测一下Array和Object的类型。

console.log(typeof (Object));//function
console.log(typeof (Array));//function

这下相信了吧。可以总结对象都是通过函数创建的
现在是不是糊涂了—— 对象是函数创建的,而函数却又是一种对象——天哪!函数和对象到底是什么关系啊?

别着急!揭开这个谜底,还得先去了解一下另一位老朋友——prototype原型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值