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"(大部分情况下)

     

  • 相关阅读:
    Unity资源打包学习笔记(一)、详解AssetBundle的流程
    Unity实现c#热更新方案探究(三)
    Unity实现c#热更新方案探究(二)
    Unity实现c#热更新方案探究(一)
    对C#热更新方案ILRuntime的探究
    Unity使用C++作为游戏逻辑脚本的研究(二)
    执行composer install/update 命令遇 "You are using an outdated version of Composer. Composer 2.0 is abo...
    php 安装xdebug进行调试(phpstorm)
    phpstudy如何设置Nginx伪静态
    JS正则表达式
  • 原文地址:https://www.cnblogs.com/lsy0403/p/5844069.html
Copyright © 2011-2022 走看看