浅谈构造函数和原型对象

来源:互联网 发布:炒股软件上市公司 编辑:程序博客网 时间:2024/06/05 13:31

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

###来看一个小例子:<br>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

0 0
原创粉丝点击