在 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); // function
-
- console.log(typeof Function); // function
-
-
-
- console.log(typeof fun1); // function
-
- console.log(typeof fun2); // function
-
- console.log(typeof fun3); // function
-
-
-
- console.log(typeof obj1); // object
-
- console.log(typeof obj2); // object
-
- console.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(); // jsliang
-
-
-
- const person2 = new Person();
-
- person2.sayName(); // jsliang
-
-
-
- // 这两个实例对应的原型方法 sayName 都是一样的
-
- console.log(person1.sayName === person2.sayName); // true