ProtoType原型和__Proto__原型链的详解

   var arr = new Array(12,13,14,15,16,17,18);
   var arr2 = new Array(12,13);
   arr.sun=function(){
 //用原型加Array.prototype.sun=function() 下面的alert(arr2.sun())生效,就不会出现说arr2没有sun方法,这就好像css里面的class给一组元素加样式
  //如果只是arr.sun,就好像是行间样式alert(arr2.sun())不会生效,因为他没有想arr那样加sun方法
var reun = null; for(var i=0;i<this.length;i++){ reun+=this[i] } return reun; } alert(arr.sun()) alert(arr2.sun())

 

// prototype函数才有的属性(prototype为函数增加方法(共用))  __proto__对象才有的属性(所以函数也有这个__proto__只不过为隐形的)
// 最终他们是相等的 → console.log(__proto__===constructor.prototype) //ture

    var a = {}
    console.log(typeof a.prototype)//undefined
    console.log(a.__proto__)//对象集合
    console.log(typeof a.__proto__) //object

    var b = function(){}
    console.log(typeof b.prototype)//object
    console.log(b.prototype)//b{}
    console.log(typeof b.__proto__)//function
    console.log(b.__proto__)//function(){}

// 原型链
// 因为__proto__是任何对象都有的属性 在js中万物皆对象 所以会形成一个__proto__连起来的链条 递归访问到最后 值为空

  var c = function(){}
  var d = new c()
  console.log(typeof d.__proto__) //object
  console.log(d.__proto__)//c() 构造器fucntion c的原型对象 
  console.log(typeof d.__proto__.__proto__)//object
  console.log(d.__proto__.__proto__)//object() 构造器fucntion object的原型对象 
  console.log(typeof d.__proto__.__proto__)//object
  console.log(d.__proto__.__proto__.__proto__)//null

 

所有对象都有隐形原型(__proto__)
let a
= 123
console.log(a.__proto__)
console.log(
''.__proto__)
以上都会打印出 该对象所拥有的方法

 

转载于:https://www.cnblogs.com/Model-Zachary/p/7414067.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值