js的__proto__与propertype的关系

经典的再也不能经典的一篇博客:http://www.cnblogs.com/snandy/archive/2012/09/01/2664134.html

js中最propertype的一些方法的理解http://www.cnblogs.com/yjf512/archive/2011/06/03/2071914.html

原型作用链终点:

我们先明白js函数这个名字既有函数属性可以()执行,也可以是对象属性可以.进行调用属性。

Array,Boolean,RegExp这些都是函数。所有他们是普通对象所有他们有__proto__属性,__proto__属性都是Function.prototype

所以他们可以后边加()然后执行。

那么Function.prototype是什么呢:

那么Function.__proto__是什么呢

 

还有一个问题,就是他们作为函数对象的,prototype属性继承自哪里呢。首先是一个Object对象,

那么Number.prototype.__proto__是谁呢。

console.log(Function.prototype.__proto__ === Object.prototype) // true

这里我们到达了Object这里。

Object.prototype 也是一个对象

其实上边这个和Object.__proto__==Function.prototype是一样的。

这里我们可以看到我们打出来的Object指的是方法的Object并不是对象的Object.

这里就又是一个终点了。

所有js的作用于有三个终点:

Object.prototype.__proto__ 打印出来是null

Function.prototype 打印出来是function (){}

Function.__proto__ 打印出来也是function (){}

 

 

 

 

 

 

 

 

 

 

 

 

 

以下的都可以当成无用的:等待以后删除:

var  sss = new Object();

 

对于sss是一个对象,任何对象的.__proto__属性表示的是他构造器的.prototype的值(这里边挂的方法也就是他继承的方法或内置方法),而此处Object.prototype的值,typeof 除了function以外的任何Object.prototype都是小写的object,所以此处是一个Object.prototype的值是一个Object类型的对象。有包含的,valueOf方法和toString方法,isPrototypeOf,hasOwnProperty,当然还有constructor表示的是这个object对象的构造器,Object类,这个类的__proto__是Function.prototype.也就是空的function(){}. 我们查找内置方法的办法就是,输入大写Object.prototype.

 

这些东西总是忘:

这里我们可以知道,普通的对 d 像的的__proto__属性是个空的 的{}这是个.

我们调用继承的方法。 这里我们需要知道,普通的对象的__proto__含有的是他的内置的方法。

var box={name:"yan",arr:[1,3,5],obj:{objName:"objyan",age:20}}创建的对象和 var box1=new Object();是一样的。他们的__proto__都是Object {}空的object对象。并没有object对应的属性和内置方法。(没有__proto__) 但是其他的方法创建的对象就不同了。

var yan=function(){this.name="yan"} var ss=new yan() ss.__proto__就表示一个yan的空对象,里边有constructor和__proto__这两个属性,然后我们点开__proto__然后就是一个空的object对象。不过这是原型链的继承方式。 不同的继承方式的__proto__是不同的。

================================================

不同的继承方式的建立的对象的__proto__是不同的

类的prototype 不论是parent.prototype显示的是parent{},String.prototype的是String{}但是typeof他们都是objec他们对象的__proto__都是object 不同的继承方式对象的__proto__是不同的。 所以这里我们需要想什么才是继承,怎么证明他是继承的,还是我们只需要管他继承了父类的方法和属性就行,不管怎么实现的。 一切方法都继承自function。我们怎么证明方法继承自function,然后我们就怎么确定son和parent的关系。所以我们obj.__proto__是自身的son{}对象就不合理,而且你看这个son中的contructor在看prototype也就乱了。

 http://www.108js.com/article/article1/10201.html?id=1092

转载于:https://www.cnblogs.com/coding4/p/5446219.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值