1.理解Function和Object

(1)问:Function和Object是构造函数吗?
答:是,所以Function和Object都有prototype属性
(2)问:Function和Object的prototype属性有关系吗?有何关系?
答:有,先有的Object.prototype且Object.prototype.__ proto __ ==null ,Function.prototype由Object.prototype构造,所以Function.prototype.__ proto __ ==Object.prototype
(3)问:Function和Object是对象吗?
答:是,所以Function和Object均有__ proto __ 属性
(4)问:那Function和Object是由谁构造的?
答:Function和Object是由Function.prototype构造的,所以Function. __ proto __ ==Object. __ proto __ ==Function.prototype

2.理解原型链

(1)问:何为原型?
答:原型就是函数的prototype属性
(2)问:如何形成原型链?
答:对象是由构造函数创建的,每个函数都有一个prototype属性,每个对象都有一个__ proto __ 属性且指向其构造函数的prototype属性,而prototype也是一个对象也有__ proto __ 属性,这样就会出现形如obj.__ proto __ .__ proto__的形式,就是所谓的原型链。
(3)举个例子
例:a=[1,2,3]
首先a是一个对象,它的构造函数是Array,那么a.__ proto __ ==Array.prototype,且Array.prototype也是一个对象也有__ proto __ 属性,且Array.prototype.__ proto __ ==Object.prototype。所以一个数组对象即可以访问Array原型上的属性也可访问Object原型上的属性。

3.原型链结构图

JS原型链理解

4.控制台输出验证

JS原型链理解

相关文章: