zoukankan      html  css  js  c++  java
  • Js的原型和原型链理解

    好多人不理解原型就是不理解这到底是什么东西(我就是), 看完本篇文章应该可以理解个大概

    原型是Js强大的功能之一, 在JS面向对象编程里, 原型是必不可少的知识储备

    Js有五种基本类型: String, Number, Boolean, undefined和null, 还有三种引用类型: Array, Object, Function

    例如对于array类型, 也有join, reverse, pop, shift等方法供我们调用 

    let arr = [];

    空空的数组,可是为什么会有方法供我们调用呢?  (这应该是很多人理解原型的切入点)

    每一个Js对象创建时都会从相应的原型继承基本的方法, 说白了就是其实我们使用的对象自带的方法保存在一个(或多个)对象里面, 这个对象就是原型

    函数有prototype属性和原型连接, 对象有[[proto]]属性(这不是一个标准方法, 但几乎每一个浏览器都提供一个__proto__来模拟)和原型连接, 并且和构造函数连接的原型是一个对象.

    以下在浏览器console里面运行:

    function test() {}
    var test1 = new test();
    test.prototype === test1.__proto__
    // 结果是true

    一直说的基于原型链的面向对象编程, 就是js的原型不是一成不变的, 我们可以通过这样的代码改变原型:

    function test() {}
    test.prototype = new function()

    如果需要共享的方法, 把它定义在new的function里面就可以了

    还有:

    let obj = new Object(null);

    这段Js代码会创建一个obj对象, 但是这个对象却继承于null, 所以,不会有任何内置方法, 就连最基础的tostring也没有

  • 相关阅读:
    Python服务Dokcer化并k8s部署实例
    Docker Machine
    Docker使用Portainer搭建可视化界面
    三小时攻克 Kubernetes!
    Docker使用pipework配置本地网络
    使用kubeadm安装kubernetes1.12.2版本脚本【h】
    rsync详解之exclude排除文件(转)
    linux生成指定大小的文件(转)
    chown将指定文件的拥有者改为指定的用户或组(转)
    Linux系统分析命令总结
  • 原文地址:https://www.cnblogs.com/jedenzhan/p/8728422.html
Copyright © 2011-2022 走看看