浅谈构造函数和原型对象

构造函数:只要函数被new就可以认为是构造函数(一般情况下构造函数有this)

###来看一个小例子:
function Person(){ var age = 20; this.username = 'zhangsan'; this.say = function(){ console.log('今天是12月1号,又是一个新的开始!'); } } console.dir(Person); **//原型对象**:Person.prototype(没有理由原型对象就是这么写,牢记) Person.prototype.school = '清华园'; Person.prototype.study = function(){ console.pedir(Person.prototy); } **//实例对象**:具有构造函数和原型对象中所有的属性和方法 var p = new Person(); console.dir(p); //p对象有构造函数内的username属性和say方法 //同时还具有原型对象中的school属性和study方法 console.log(p.username,p.school); p.say(); p.study();

构造函数 Person

  • Person.prototype : 获取原型对象
  • username
  • say()

原型对象 Person.prototype

  • constructor : 获取对应的构造函数
  • school
  • study()
  • _ proto_(双下划线)
特别强调:
1.原型对象中都有constructor和__proto__属性

实例对象

  • username->构造函数 Person
  • say()->构造函数 Person
  • scholl->原型对象 Person.prototype
  • study->原型对象 Person.prototype
  • constructor->原型对象 Person.prototype
  • proto->原型对象 Person.prototype
1.实例对象将构造函数和原型对象中所有的属性和方法都可以获取到
2.p.__proto__.school和p.school一样(简写)
3.原型对象中的方法和属性都是所有对象共享的,构造函数中的方法和属性都是不共享的
4.所有的对象都可以获取到Object的原型对象的属性和方法

p.constructor == Person
p.proto == Person.prototype

你可能感兴趣的:(JavaScript)