zoukankan      html  css  js  c++  java
  • 什么是原型链?

    JavaScript是面向对象的,每个实例对象都有一个__proto__属性,该属性指向它的原型对象,这个实例对象的构造函数有一个原型属性prototype,与实例的proto属性指向同一个对象。当一个对象在查找一个属性的时候,自身没有就会根据__proto__向它的原型进行查找,如果都没有,则向它的原型的原型继续查找,直到查到Object.prototype.proto_为null,这样也就形成了原型链。

    原型对象和实例之间有什么作用呢?

    通过一个构造函数创建出来的多个实例,如果都要添加一个方法,给每个实例去添加并不是一个明智的选择。这时就该用上原型了。

    在实例的原型上添加一个方法,这个原型的所有实例便都有了这个方法。

    var M = function (name) { this.name = name; }
    var o3 = new M('o3')
    • 实例就是对象,在本例中o3就是实例,M就是构造函数。

    • 实例通过new一个构造函数生成的。

    • 从上图中可以知道,实例的proto指向的是原型对象。

    • 实例的构造函数的prototype也是指向的原型对象。

    • 原型对象的construor指向的是构造函数。

      补充:

      只有函数有prototype,对象是没有的。

      但是函数也是有proto的,因为函数也是对象。函数的proto指向的是Function.prototype。

  • 相关阅读:
    caffe:使用C++来提取任意一张图片的特征(从内存读取数据)
    python:控制鼠标和键盘
    .dll 文件编写和使用
    python:打包成exe程序
    python:小乌龟turtle
    python:input()和raw_input()
    C++:哈希
    C++:线程(std::thread)
    GitHub:Git的使用
    链表
  • 原文地址:https://www.cnblogs.com/zhaosijia----1234/p/10451590.html
Copyright © 2011-2022 走看看