prototype属性:
prototype属性:
对于引用类型来说,prototype保存着所有实例方法的真正所在,即所有的实例方法都是在prototype中保存着,平时,我们在使用实例方法时,
虽然用对象直接调用,但是真正的保存是在prototype中。在继承中prototype的作用更加明显
我们创建的每个函数都有一个属性是prototype(原型),这是属性是个指针,指向一个对象,该对象的用途是包含所有实例共享的属性和方法。
所有通过同一个构造函数创建的实例对象,都会共享同一个prototype。
示例:
<script type="text/javascript">
function Student(newId,newName,newAge){
this.id = newId;
this.name = newName;
this.age = newAge;
//公共部分
// this.eat = function(){
// console.log("椒盐蘑菇");
// }
}
//原型对象
Student.prototype.eat=function(){
console.log("椒盐蘑菇");
}
//原型属性
Student.prototype.score = 99;
let e1 = new Student(1,"刘备","20");
let e2 = new Student(2,"关羽","19");
e1.score=80;
//删除e1的原型属性 this.score;
delete e1.score;
e1.eat();
e2.eat();
console.log(e1.score);
console.log(e2.score);
</script>
注意事项:
** 区分原型的属性和实例的属性:
实例:用new调用构造函数创建出来的对象叫做实例。
原型属性:写在prototype后面的叫做原型属性 。
实例属性:创建出来的对象,重新给原型属性赋值后,就成为了实例属性。**
注意原型图:
函数(类)的属性:prototype
实例的属性:proto