js中函数的原型
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>本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!