• 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类常用装饰器
    继承的实现
    map用法
    包的导入和init函数
    协程
  • 原文地址:https://www.cnblogs.com/jedenzhan/p/8728422.html
Copyright © 2020-2023  润新知