zoukankan      html  css  js  c++  java
  • javascript中的构造函数和原型及原型链

    纯属个人理解,有错误的地方希望大牛指出,以免误人子弟

    1、构造函数:
    构造函数的作用 : 初始化由new创建出来的对象    
    new 的作用: 创建对象(空对象)

    new 后面跟的是函数调用,使用new来调用函数,跟普通的直接调用函数主要的不同: 就是 this 的指向不同了 , 再就是 会自动的返回新创建的对象

    什么是原型?       

    原型的作用:就是为了实现继承! 

    一个对象的原型就是它的构造函数的prototype属性的值。

    在讨论原型的时候,是指的 对象和原型对关系

    prototype是哪来的? 

    所有的函数都有一个prototype属性, 当函数被创建的时候,prototype属性会自动创建和初始化 JS的引擎帮我们创建好的),

    构造函数的prototype属性的默认值是一个对象,这个对象 只带有一个属性,constructor // // Person.prototype.constructor === Person // 结果为:true

     对象在被创建的时候,原型就定下来了, 那么其原型链也就确定下来了

    // function Person() {}

    //    var p = new Person();

      p是构造函数Person创建的对象,其对象的原型链是

    // p -> Person.prototype -> Object.prototype -> null

    // Person.prototype = {};      

    虽然,修改了Person.prototype的值,但是不能影响到已经创建好的对象的原型链 

     原型链就是对象有原型对象,原型对象也是对象,所以原型对象也有原型对象,这样一环扣一环,就形成了一条链式结构叫做:原型链,也叫对象链 

    JavaScript继承就是 拿来主义:自己没有,别人有,拿过来让其成为自己的或者能被自己使用。

    一些结论:

    1 只有 函数 才有 prototype 属性(★★★★★)

    2 只要是 对象 就有 __proto__ 属性(★★★★)

    3 构造函数的 prototype 的类型是:"object"(大部分情况下)

     

  • 相关阅读:
    只有标题1没有标题2、3的解决方法
    python函数学习总结
    python基础知识学习总结
    StructuredStreaming中,如果trigger触发时前一批数据还没处理完怎么办?
    StructuredStreaming解析JSON CVS
    StructuredStreaming整合kafka
    kafka--如何选择Kafka的分区数和消费者个数
    kafka中groupid作用
    查看kafka版本
    spark项目java与scala相互调用打包
  • 原文地址:https://www.cnblogs.com/lsy0403/p/5844069.html
Copyright © 2011-2022 走看看