4.1给原型添加属性

创建构造函数的时候,原型对象上会有一个constructor属性,它是原型对象所独有的,它指回构造函数本身

  1. function Person(name,age){
  2. this.name=name;
  3. this.age=age;
  4. }
  5. Person.prototype.sayName=function(){
  6. console.log(this.name)
  7. }
  8. Person.prototype.sayAge=function(){
  9. console.log(this.age)
  10. }
  11. var p=new Person("meng",21)
  12. console.log(p)
  13. console.log(p.constructor==Person)//true
  14. var arr=[1,2,3];
  15. console.log(arr.constructor==Array)//true

constructor.PNG

4.2给原型添加属性

以直接量形式(对象),给原型对象添加属性的时候,他的contructor会指向object

  1. function Person(name,age){
  2. this.name=name;
  3. this.age=age;
  4. }
  5. Person.prototype={
  6. sayName:function(){
  7. console.log(this.name)
  8. },
  9. sayAge(){
  10. console.log(this.age)
  11. }
  12. }
  13. var p=new Person("meng",21);
  14. console.log(p)
  15. console.log(p.constructor);
  16. console.log(p.constructor==Person)//false
  17. console.log(p instanceof Person)//true

方法:重置constructor constructor=Person

  1. function Person(name,age){
  2. this.name=name;
  3. this.age=age;
  4. }
  5. Person.prototype={
  6. constructor:Person,//重置constructor
  7. sayName:function(){
  8. console.log(this.name)
  9. },
  10. sayAge(){
  11. console.log(this.age)
  12. }
  13. }
  14. var p=new Person("meng",21);
  15. console.log(p.constructor);
  16. console.log(p.constructor==Person)//true

4.3 公有属性和私有属性

公有:在一般的原型对象上
私有:通过this关键字添加 (sayName sayAge)
hasOwnProperty判断属性是公有还是私有

  1. function Person(name,age){
  2. this.name=name;
  3. this.age=age;
  4. }
  5. Person.prototype={
  6. constructor:Person,//重置constructor
  7. sayName:function(){
  8. console.log(this.name)
  9. },
  10. sayAge(){
  11. console.log(this.age)
  12. }
  13. }
  14. var p=new Person("meng",21);
  15. console.log(p.hasOwnProperty("name"));//true 私有
  16. console.log(p.hasOwnProperty("sayAge"));//false 公有
  17. console.log(p.hasOwnProperty("sayName"));//false 公有