浅谈构造函数和原型对象

构造函数:只要函数被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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值