zoukankan      html  css  js  c++  java
  • 1.面向对象 及 相关知识点

    类和实例的关系:
    类是实例的抽象、实例是类的具体事务.

    抽象:
    把像的部分抽取出来。

    面向对象:(Object Oriented,OO)(构造函数+原型模式的一种结合)
    把相同的代码提取(抽象)出来归为一类,把公共的方法挂在 这个类的原型上 的一种编程思想(开发模式)

    在js中,一切皆对象。
    let f = new Function//f(或者new Function)就是Function的实例,Function是f(或者new Function)的构造函数

    构造函数的this指向实例化对象
    1 function fn(){
    2 console.log(this);// fn {}  (fn的实例是new fn,也就是 f)
    3 }
    4 let f = new fn;
    5 console.log(new fn);// fn {}
    6 console.log(f);// fn {}

    new是一元运算符,专门运算函数的。
    new之后不加()也会执行函数,加括号是为了传参用的。
    除函数以外 使用new就报错//is not a constructor

    没有new之前:单纯的函数调用(函数名加括号)this指向window
    return的默认返回值是undefined
    return后面跟什么值,返回值就是什么值

    new之后:this指向实例化对象
    return的默认返回值是this,(所以可以不写return 默认返回实例化对象)
    若,返回值是简单类型的,返回一个实例化对象(this)。
    若,返回值是对象类型的,返回值是这个对象。
    例子:
    1     function Fnn() {
    2         console.log(this);//Fnn {} (可以看到只有原型链,说明是个对象,事实上就是Fnn的实例化对象)
    3     }
    4     let ff = new Fnn;//new 之后,会自动运行一次函数,此时ff拿到构造函数Fnn的返回值。
    5     console.log(ff);//Fnn {} (Fnn的返回值,默认是this,也就是实例)
    6     console.dir(Fnn);//ƒ Fnn() (就是这个函数,既有原型:prototype,也有原型链:__proto__)

    补充:

      只有对象,才有原型链:__proto__

      只有类,   才有原型:   prototype

      函数的三种角色:1.函数就是   函数

              2.函数是个   类

              3.函数还是   对象

      所以函数,既有原型,也有原型链。

    (原型和原型链,我把它放在另一篇随笔上,太多容易乱)

  • 相关阅读:
    sed附加命令
    01_Mac下安装homebrew
    02_linux常用指令
    18_Condition条件
    01.IDEA常用快捷键
    17_重入锁ReentrantLock
    秒杀系统架构分析与实战--转载
    16_Queue_利用wait()和notify()编写一个阻塞队列
    15_volatile
    14_synchronized深入
  • 原文地址:https://www.cnblogs.com/MrZhujl/p/9879552.html
Copyright © 2011-2022 走看看