前端 -> JavaScript prototype原型对象;原型链

JavaScript prototype原型对象;原型链

prototype原型对象:可以看成父类,但是其实不是,字面意思就很清楚,原型是自己

  • 可以这样说
    • 定义一个函数A,没有new,没实例化
    • 虽然没有实例化,但是js会偷偷new一个叫做原型对象的玩意指向它,每个函数都会有一个
    • 所以原型对象可以看做实例化的特殊对象,有且只有一个
    • 而且以后我们自己new的都会继承这个对象(理解成继承吧)
    • 也差不多可以把原型对象看成object类
    • 所有的函数自己new的实例都指向 唯一 一个 原型对象,就跟大家都是继承object一样
  • 所以:
    • 原型对象中加方法加属性,自己实例化的对象也可以使用的
    • 跟在object加方法属性,所有类都可以使用一样(虽然object不能加)

原型链:

  • 就是父类套娃中的套娃的一整串的继承啊
  • 毕竟函数也是可以继承其他函数的,父类的原型对象,跟本身的原型对象也有继承关系嘛
  • 这个继承关系又不是我们那种很清楚明白查得到的继承,那就换个名字叫原型链好啦

注意:

  • 属性是不能调用prototype的,因为属性没有父类
  • js中的类也就是函数,也就是说只有函数才能调用prototype
  • 而函数中的一些var,对象中的属性肯定是不能调用prototype的

实例:

AA = sfs.Class(rod.Object, {
	function b(){
		rod666: function(){
		}
		
	}
}

说明:

  • AA继承了Object类,Object是基类
  • 想初始化AA呢就new AA()
    • 调用rod666()就要new AA().rod666()
  • 还有一种prototype的原型方法
    • 要调用rod666,我们可以AA.prototype.rod666()
    • 这样调用可以不用new AA()
    • 啥意思呢?
    • AA的原型是js偷偷搞出来的对象吧,对象嘛已经实例化过了嘛,调用自己的方法不是洒洒水啦
    • 那相反的,不是原型对象的,就老老实实自己new再调用喽

优劣:

  • 好处就是想用就用,差不多每个原型都有点静态的味道
  • 坏处懂得都懂(其实我也不懂)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值