原型

1,定义:原型是function对象的一个属性,它定义了构造函数制造出对象的公共祖先。通过该构造函数产生的对象,可以继承该原型的属性和方法。原型也是对象。

原型就相等于构造函数所要构造的对象的父亲,比如上面person里虽然是空的,但是可以访问name属性,这就是一种继承、

可以访问原型中的对象,也可以访问自己的对象

原型的作用:

利用原型的特点和概念,可以提取共有属性,减少代码重复执行

原型的增删改查:

查看:直接点就好

改:

发现person对象中增加了lastName属性,返回的也是person中的lastName属性。

所以,你只能像下面那样写:

增加:

删:

切记:

这是删不掉的,系统会认为你是在删除一个没有的元素,所以才会返回true,如下

原型还可以用下面这种表示方法

--------------------------------------------------------------------------------------------------------

发现键入了person.constructor之后返回了person的构造函数,(constructor会返回构造这个对象的构造函数)

Person.prototype.constructor暂时没有什么用

那么,这个constructor是从哪里来的?我们自己没有设置,看下面:

那么,我们现在更改constructor

发现也会更改

-----------------------------------------------------------------------------------------------------------------

我们最开始把name:abc保存到了原型里面,现在在proto里面找到了name : abc,所以proto就是用来保存原型的

在说构造函数构造对象时的三段式:

先建立一个空的this对象,

然后执行this.xxx = xxx;

最后返回this,

其实最先创造的this对象并不是空的,里面就有: __proto__ : Person.prototype,它起到一个连接的作用,如果在自己的对象空间中没有找到对应的元素就回沿着__proto__的值去查找,即到原型中查找

再看下面:

我们改变proto之后就会发现person.name值也进行更改了

三段式(new触发)第一段建立一个this对象,内部__proto__指向这个时候的Person.prototype,然后接下来Person.prototype改变了自己的内容,但是这个时候他是通过重新申请一个空间来改变的,同时__proto__的指向并没有发生变化,所以还是sunny(原理就是原始值和引用值)

就和下面一样

这个是由于在new 执行的时候才会有this对象出来

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值