这是我参与更文挑战的第17天,活动详情查看: 更文挑战
原型
为什么使用原型
利用原型可以提高代码的复用性。
直接看以下代码来理解:
<script>
function Person(name,age,gender){
this.name = name;
this.age = age;
this.gender = gender;
this.sayName = function () {
}
}
var person1 = new Person();
var person2 = new Person();
console.log(person1.sayName == person2.sayName);
</script>
复制代码
可以看到结果是false,这就是这种方法的缺点,对于每一个基于Person创建的对象都会重复地保存这些相同的方法,但他们本质上不是同一个方法,这就带来了浪费。利用原型对象就可以保存一些公共的属性和方法,解决这个问题。
原型对象的使用方法
那么怎么使用原型对象呢?
通过使用prototype属性指向该对象,这个对象称之为原型对象。
利用原型对象为对象添加新的方法和属性。
<script>
function Person(name){
this.name = name;
}
var person = new Person("Tom");
Person.prototype.sayName = function () {
console.log(this.name);
};
var person2 = new Person("Jack");
console.log(person.sayName == person2.sayName);
person.sayName();
person2.sayName();
</script>
复制代码
可以看到,本来构造函数Person()中,不存在sayName方法,使用prototype可以为构造函数添加属性和方法。
继承
利用原型对象来继承。如果一个对象中本来没有某个属性或方法,但是可以从另一个对象中获得,这样就实现了继承。
<script>
function Person(name){
this.name = name;
}
Person.prototype.sayName = function () {
console.log(this.name);
};
var person1 = new Person("Tom");
var person2 = new Person("Jack");
person1.sayName();
person2.sayName();
</script>
复制代码
本来对象person1和person2中是没有sayName方法的,但是可以通过对Person的原型添加方法,这样两个对象也就拥有了该方法。上述代码可以理解为,对象继承了原型对象中的成员。
JS中的继承不止有这一种方式,下期我们细讲JS中的其他继承方式。
以上就是我对JS原型的一些理解,如有错误或不足之处欢迎评论指正。
(写作不易,欢迎点赞。)
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END