js prototype诞生,从此有了函数

本文探讨了JavaScript中函数的来源及其与原型链的关系。详细解释了Object.prototype和Function.prototype的作用,以及如何通过构造函数创建对象和函数。

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

身为函数语言的js,函数从何而来

Object.prototype

Object.prototype是js中诞生的第一个对象

Function.prototype

Function.prototype通过__proto__继承了Object.prototype,作为Js中诞生的第二个对象,该对象实现了js中的两种类型

js只有object number boolean function undefiend

Function和Object

很多人搞不清楚这两者的关系,确实这个关系比较绕。首先因为有了前面的两个prototype,这两哥们才关联起来了。
图片描述

  • 从上图可以看出Object和Function的原型链是一样的(why)

因为Object和Function是js中最重要的两个构造函数,Object既然是函数,继承Function.prototype就没什么奇怪的了

  • var obj = new Object();var obj = {}

这两个代码是一样的

创建一个空对象{}
将空对象的__proto__赋值Object.prototype
Object.apply({})

  • var fun = new Function();function fun(){};

同上
var fun = function(){};这个和前面两个也是等价的,但是有一个地方不太一样
new file stutent.js
`exports = module.exports = fun;

var fun = function (){

console.log('adf');

};`

在app.js中var student = require('./student'); 得到student为null
目前尚不知道原因

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值