js原型链

2019-04-25 06:51:59来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

    js 原型链,其实就是对象,方法的一些关系,首先要明确一点,对象实例是没有prototype,函数才有prototype

    废话不多说我们一些console一下都是写什么东西

/* 首先我们创建一个对象 */
let obj = {}
/* 上面的和下面是一样的,都是一个空对象 */
let obj2 = new Object()

console.log(obj.prototype)  // 输出undefined
/* 证明对象实例确实是没有prototype的 */
/* 让后我们查看一下obj.__proto__ */
console.log(obj.__proto__)/* 行吧输出了一对东西无法判断 */
/* 我们猜测一下 */
console.log(obj.__proto__===Object.prototype) //输出true
/* 上面一行 完全等于,证明这是一个东西*/
/* 那Object.__proto__ 又指向的啥,打印一下 */

console.log(Object.__proto__) // ƒ () { [native code] }
/* 有点像一个函数 */
/* 猜测一下 */
console.log(Object.__proto__ === Function.prototype) //输出true /* 原来指向的是这里 */

/* 那我们继续看一下 Object.prototype.__propo__ 是啥*/
console.log(Object.prototype.__proto__) //输出 null /* 到null了,证明到头了,没东西了 */

/* 那上面就是对象的一整条原型链了 */

/* 那下面我们看一下函数的 */
/* 首先看一下构造函数 */

function Person () {
    name: 'cz'
}

let p1 = new Person()

/* p1是一个对象,根据上面的他只有__proto__ */
console.log(p1.__proto__) // constructor ƒ Person()

console.log(p1.__proto__ === Person.prototype) //true

/* 下面就是一个正常的函数了 */
/* Person 就是一个函数 */
console.log(Person.__proto__) // ƒ () { [native code] }
/* 上面这个看着有点像,挺像,之前,Object.__proto__ */
/* 那就不用考虑了 */
console.log(Person.__proto__ === Function.prototype) //ture
/* 再看一下 Function.__proto__*/
console.log(Function.__proto__) //ƒ () { [native code] }  
/* 然是这样,Funtion的显示原形和隐式原形相等 */
console.log(Function.__proto__.__proto__) /* 输出,constructor: ƒ Object() 有点意思*/
/* 上面的不是  Function.__proto__.__proto__ === Function.prototype.__proto__*/
/* 那最终是不是有道对象上去了 */
console.log(Function.prototype.__proto__ === Object.prototype) //输出true

  function 最终又到Object,不得不说一切都对象 

  总结一下

    重点重点,实例对象没有prototype,

    最终Object.prototype.__proto__  指向的null

    Function.prototype === Function.__proto__  

    Function.prototype.__proto__ === Object.prototype
    实例对象的__proto__ 只想构造函数的 prototype
    构造函数的__proto__ (构造函数其实是一个对象) 当然具体构造函数名.prototype
    具体构造函数名.__proto__只想 Function.prototype 也等于  Function.__proto__
 
    上面就是一条回路了。现在清晰了吧
    

原文链接:https://www.cnblogs.com/czkolve/p/10760002.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:通过javascript修改class名字-学习笔记

下一篇:d3.svg.line()错误:TypeError: d3.svg.line is not a function