原型链
1、普通对象和函数对象
在javascript中万物皆对象,对象分为普通对象和函数对象,可以通过typeof来判断对象是哪一种类型的对象。
1.1 普通对象
typeof obj === 'object'; // true
let obj1 = {};let obj2 = new Object();let obj3 = new Array();
console.log(typeof obj1); // object
console.log(typeof obj2); // object
console.log(typeof obj3); // object
1.2 函数对象
typeof obj === 'function'; // true
let f1 = new Function('a', 'b', 'return a + b');let f2 = function () {};function f3() {};
console.log(typeof f1); // function
console.log(typeof f2); // function
console.log(typeof f3); // function
console.log(typeof Function); // function
console.log(typeof Object); // function
console.log(typeof Array); // function
console.log(Function.constructor === Function); // true
console.log(Object.constructor === Function); // true
console.log(Array.constructor === Function); // true
注: 凡是通过new Function() 创建的对象都是函数对象,其他的都是普通对象。f1,f2,f3,实际上也是要通过 new Function()的方式进行创建。Function Object 也是通过 New Function()创建的。javascript大部分内置对象的构造器属于函数对象。
Js中的对象可以分为三类:
1内置对象:列入数组,函数,日期
2宿主对象:即js解释器所嵌入的宿主环境(比如浏览器)定义的,列如HTMLElement等
3自定义对象:及程序员用代码定义的:对象的属性分为两类:
1自有属性:直接在对象中定义的属性
2继承属性:在对象的原型对象中定义是的属性
创建对象的两种方式:
1const obj = {a:1,b:2}
2 const obj = new Object();创建一个空对象,和{}一样
const obj = new Arary()创建一个空数组,和{}一样
const obj = new Date()创建一个表示当前时间的Date对象