zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    python sort dict 总结
    深度学习网络压缩模型方法总结(model compression)
    串口通讯(中)——USART
    串口通讯(上)——基础概念
    关于通讯的一点常识
    SysTick定时器的一个简单应用
    RCC时钟配置实践
    GPIO输入——按键检测
    stm32中断初识与实践(下)
    stm32中断初识与实践(上)
  • 原文地址:https://www.cnblogs.com/coding4/p/5446219.html
Copyright © 2011-2022 走看看