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