javascript原型链

原型链,很让人头疼的术语,有太多的文章和权威书籍做解释,但是始终很难看懂,下文是我的一些愚见。 

js说是面向对象的,但其实是没有严格的类、封装、继承这些东西(至少没有像java那样),所以就弄了个原型链prototype来搞定这些事情。


每个对象(object) 都有prototype (内部包含属性和方法成员),但是 new 的时候不会有,

而 __proto__内原型(继承,指向其‘父类’,)[new 的时候也有],这么一来就明了了,每个对象就像面向对象语言里面的实例,有继承自父类,也有自定义的属性和方法。


constructor 构造函数(简单的说谁创造了它)

 sub.__proto__==base.prototype  // true

 sub.__proto__.constructor ==base.prototype.constructor  // true


// 原型链的使用

 function base(){

    this.c="sd"
   }
base.prototype.from = 'base'; // 自定义的属性

base.prototype.constructor=base  

base.prototype.drop=function(){ // do something}   // 父类自定义的一个方法 something

var example = new base();

console.log( example.__proto__.constructor ==base.prototype.constructor)  //true

那么example 同时有 {// do something } 方法和from 属性(继承自父类base),著名的jquery 也是这么玩 的!

一个函数(或new 出来的对象)首先执行prototype 的方法,如果没有则执行__proto__ (即执行继承而来的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值