Object 和 Function 都是 JavaScript 自带的函数对象

在 JavaScript 中,万物皆对象,你要一个吗?new Object() 啊!

当然,就好比同样为人,也区分普通人和天才。

对象也是有分类的,分为 普通对象函数对象

而 Object 和 Function 都是 JavaScript 自带的函数对象

function fun1() {};const fun2 = function() {};const fun3 = new Function();const obj1 = {};const obj2 = new Object();const obj3 = new fun1();console.log(typeof Object); // functionconsole.log(typeof Function); // functionconsole.log(typeof fun1); // functionconsole.log(typeof fun2); // functionconsole.log(typeof fun3); // function console.log(typeof obj1); // objectconsole.log(typeof obj2); // objectconsole.log(typeof obj3); // object

在上面代码中,fun1、fun2、fun3都是函数对象,obj1、obj2、obj3都是普通对象。

原型对象

其中每个函数对象都有一个prototype属性,这个属性的指向被称为这个函数对象的原型对象(简称原型)。

function Person() {};Person.prototype.name = 'jsliang';Person.prototype.sayName = function() { console.log(this.name);};const person1 = new Person();person1.sayName(); // jsliangconst person2 = new Person();person2.sayName(); // jsliang// 这两个实例对应的原型方法 sayName 都是一样的console.log(person1.sayName === person2.sayName); // true

参考:jsliang 求职系列 – 02 – 原型与原型链 – 掘金