prototype与__proto__

在js中 prototype属性是只有函数才能调用到的 而 __proto__属性是只属于对象的

这里我们需要明白 __proto__的属性是永远由一个对象指向另一个对象的(就是指向它们的原型对象,也就是父对象) 也就是说

儿子-->爸爸-->爷爷 这也就是所谓的原型链

__proto__的作用就是,当我们访问一个对象中并不存在的属性时 __proto__便会去访问这个对象的爸爸,也就父级对象

若爸爸那里也没有便会去访问它的爷爷,一层一层往上查找它的原型对象,直到找到最上层还没有找到的话,便返回undeifined

上面这种由__proto__属性来连接对象 并一层一层往上直到null为止的链条,我们便称为原型链

 

在来谈谈prototype属性 首先它是函数独有的 它是由函数指向一个对象的(即指向它的原型对象),也就是这个函数所创建的实例的原型对象

prototype指向爸爸然后又由__proto__指向爷爷

也就是说 函数所创建的实列对象 . __proto__ === 函数 . prototype

prototype属性的作用就是让该函数所实例化的对象们都可以找到公用的属性和方法。这里比方说,我为String对象创建一个公用

方法

String.prototype.repeatify=function(count){
    var str = ""
    for(let i=1;i<=count;i++){
        str+=this+",";
    }
    return str;
}

//这里定义的repeatify的作用可以输出指定重复的字符
//那么我们这么写的话 现在所有string类型都可调用repeatify方法
//比如说 
console.log('hello'.repeatify(3));//它将循环打印三个hello

 

constructor属性也是对象才拥有的,它是从一个对象指向一个函数,(含义就是指向该对象的构造函数),

每个对象都有构造函数(本身拥有或继承而来),

Function这个对象比较特殊,

它的构造函数就是它自己

(因为Function可以看成是一个函数,也可以是一个对象),

所有函数和对象最终都是由Function构造函数得来,所以constructor属性的终点就是Function这个函数。

 

 

以上为自己总结,若有错误,请随时指正
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值