构造函数与实例对象和原型对象三者间的关系
**
构造函数与实例对象和原型对象三者间的关系
**
在我认知中,实例对象就是儿子,构造函数就是母亲,原型对象就是爸爸。每次生儿子,儿子就会把母亲身上的属性继承一份新的。
例子:
var obj = {name:'干爸爸',age: 66}
//构造函数
function Mother(){
this.name = 'zqc',
this.age = 33
}
function MotherTwo(){
this.name = '新妈妈',
this.age = 22
}
//原型对象
Mother.prototype.name = 'sxq';
//实例对象
var SonOne = new Mother();
一. new 命令的原理
-
先创建一个空对象,作为将要返回的实例对象。
-
将这个对象指向构造函数的prototype。
-
将这个空对象赋值给函数内部的this关键字。
-
开始执行构造函数的内部代码。
SonOne.name
自己有的属性用自己的,自己没有的就找父亲要,父亲没有的就找祖父要。
打印 SonOn.name 如果自己身上有name属性就打印出来自己身上的name 就是 zqc。
如果自己身上没有就去找父亲要,那样的话就找到了 sxq 。
二. constructor属性
如果儿子(实例对象)想找母亲(构造函数),这时候就要去问父亲(原型对象) 。
SonOne.constructor 这个时候就会打印 构造函数(母亲)
儿子不能修改父亲的constructor值。就像你叫你爸换一个妈,你爸肯定不会换的。
Mother.prototype.constructor = MotherTwo;
你爸(原型对象)可以选择换个妈,然后爸爸就会给你说( MotherTwo)才是你妈。
三. proto 属性
儿子(实例对象)找父亲(原型对象)
SonOne.proto 这个时候就会打印 构造函数的prototype
儿子可以修改__proto__ , 就相当于你可以 你可以选择不认自己的爹,在给自己找一个干爹。 eg: SonOne.proto = obj ;
修改后,你在打印就会爸爸的年龄就会打印出来 66
完整图关系图
上一篇: 实例学习WPF的MVVM编程模式1
下一篇: Taro 技术揭秘:taro-cli