一、原型
1.原型的定义:
他是构造函数的祖先
代码举例说明:
运行结果:
解释说明: 原型的晚辈可以继承原型中的属性和属性值
2.原型的特点:
1.原型是构造函数的公共的祖先,当定义两个变量都等于构造函数,那么原型中的name为这两个变量共有的
2.原型也是对象
3.构造函数有自己的属性,原型中的属性就不会起作用了。
4.原型可以减少代码的冗余,例如:
1.可以把构造函数里面每次要执行的属性值(公有属性)都放在外面
Person.prototype.name = "haha";
Person.prototype.age = "18";
Person.prototype.lang = "4900";
可以简化的写为:
* Person.prototype = {
name = "haha",
age = "18",
lang = "4900",
}
3.原型的增删改查
1.改变原型:
Person.prototype.lastName = “wangzehui”;
2.查看原型
Person.prototype.lastName
3.原型不可以删除
4.constructor
constructor可以返回构造函数
执行结果:
当原型改变时,再返回构造函数也会改变
5.内部属性
6.执行代码
优先执行: Person.prototype.name = ‘sunny’;//优先显示
因为在person中,有一个隐式定义,为:
他会把Person.prototype中的值赋给新的变量,但是前面的__proto__不变,还是原来原型中name的值
2.
执行结果:
没有执行new,新的name值会覆盖以前的name值,会返回cherry
二.原型链
1.定义:原型上面加原型,把原型连成链,就是原型链
代码举例说明:
这样可以把原型的属性全部赋给son构造函数中。
2.增删改查
只能是本人进行删,改,增操作
执行结果:
绝大多数对象的最终多会继承自object.prototype
系统给予的属性,自己可以改,但是系统没有给我们的属性,是不可以进行修改的
object.create(原型):