原型对象prototype和对象原型__proto__

1.构造函数

js的构造函数中可以添加一些成员,可以在构造函数本身上添加,也可以再构造函数内部的this上添加,通过这这两种方式添加的成员,就分别成为静态成员实例成员

  • 静态成员:在构造函数本身上添加的成员称为静态成员,只能由构造函数本身来访问。
  • 实例成员:在构造函数内部创建的对象成员称为实例成员,只能由实例化的对象来访问。
    function Start (name,age){
    	this.name = name;
    }
    var ldh = new Start('刘德华',33)
    ldh.sex = '男'
    console.log(ldh.name,ldh.sex)    //刘德华   男
    // name--实例成员  sex--静态成员

2.构造函数的问题及prototype

3.原型对象prototype

构造函数通过分配原型分配的函数是所有对象共享的(解决了复杂数据类型浪费内存的问题

js规定,每一个构造函数都有一个prototype属性,指向另一个对象,注意这个prototype就是一个对象,这和对象的所有属性和方法,都会被构造函数所拥有。

我们把那些不变的方法,直接定义在prototype上,这样所有的对象的示例就可以共享这些方法。

Star.prototype.sing = function(){
    console.log("我会唱歌")
}

4.对象原型__proto__

对象都有一个属性__proto__指向构造函数的prototype原型对象,之所以我们对象可以使用构造函数prototype原型对象的属性和方法,就是因为__proto__原型的存在。

__proto__对象原型和原型对象prototype是等价的;

__proto__对象原型的意义就在于为对象的查找机制提供一个方向,或者说是一条路线,但是他是一个非标准属性,因此在实际开发中,不可以使用这个属性,他只是内部指向原型对象prototype。

5.原型constructor

 对象原型__proto__和原型对象prototype里面都有一个constructor属性,constructor称为构造函数,他指回构造函数本身。

普通状态:constructor指回构造函数Start

其他状态:在原型对象上添加方法和属性,导致constructor被覆盖掉

手动指回:在prototype原型对象上手动增加constructor,并手动指回构造函数Start

Start.prototype = ...会覆盖掉原先的Start.prototype.constructor属性,所以需要添加constructor:Start,让这个属性指回原来的构造函数    

5.构造函数、实例、原型对象三者之间的关系。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值