js中每一个构造函数都有一个prototype的属性,prototype指向一个对象,而这个对象的属性和方法都会被构造函数的实例所继承,因此,需要一些共享的属性和方法可以写在构造函数的原型中
1 用prototype属性可以向构造函数添加可继承的属性和方法,注意constructor属性指向prototype对象所在的函数
<script> function Person(){ } Person.prototype = { constructor: Person, name: ‘xxx‘, age: 22, sayName: function(){ console.log(this.name); } } var p = new Person(); p.sayName();//‘xxx‘ console.log(p.age);//22 </script>
2 一个同名属性在构造函数和prototype对象中存在时,构造函数的实例采用构造函数里的this属性,优先级类似于:实例>构造函数>原型
<script> function Person(){ this.age = 233;//创建实例时赋给实例的属性 } Person.prototype = { constructor: Person, name: ‘xxx‘, age: 22, sayName: function(){ console.log(this.name); } } var p = new Person(); console.log(p.age);//233 p.age = 333; console.log(p.age);//333 </script>
3 原型的继承
<script> function Person(){ this.age = 233;//创建实例时赋给实例的属性 } Person.prototype = { constructor: Person, name: ‘xxx‘, age: 22, sayName: function(){ console.log(this.name); } } var p = new Person(); console.log(p.age);//233 p.age = 333; console.log(p.age);//333 function Student(){ } Student.prototype = new Person();//继承 var s = new Student(); console.log(s.name);//‘xxx‘ s.name = ‘qqq‘; console.log(s.name);//‘qqq‘ </script>
原文地址:https://www.cnblogs.com/Zxq-zn/p/11609903.html
时间: 2024-10-31 01:29:30