看了原型文章,自己写一个,只为大家纠错,更好进步

原创 人马在冬至追风 随笔 随笔 125阅读 2018-12-20 14:02:29 举报

1、刚学js总有一句古话“万物皆对象”,这里记住第一点,每个对象都有proto属性,咱先不管他是干嘛的。
2、原型 -- prototype 记住第二点
3、原型链就是proto 和 prototype的关系
4、每个创建对象都有constructor属性,它指向其构造函数本身
5、函数的申明的两种方式:
a. let fn = function(){}
b. function fn(){}
每个函数声明即是一个函数对象
第一个例子:创建一个构造函数
let People = function(name,age){
this.name = name
this.age = age
}
let people1 = new People('Tom',13)
People -- 构造函数(函数对象)
people1 -- People的实例对象
这段代码中存在的原型链:
people1.proto = People.prototype
得出一个结论:
构造函数的实例对象.proto = 构造函数.prototype
根据第四点,得出第二个结论:
people1.constructor = People
构造函数的实例对象.constructor = 构造函数
通过以上两个例子基本让大家对原型链有个基础直观的认识
即原型链的形成 .proto继承.prototype

深化一下,那么People.proto等于谁呢?我们想想看,People是一个构造函数也是函数对象,那么函数对象的上层是谁呢?是People的构造函数,即就是Function!
People.proto = Function.prototype
好了,用一句个人理解的大白话来说:
看谁继承谁,被new出来的对象(即构造函数实例).proto = new它出来的对象(即构造函数).prototype
最后一个例子:
People.prototype.test = function(){console.log(233)}
people1.test() // 233

评论 ( 1 )
最新评论