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.函数还是   对象

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

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

  • 相关阅读:
    富文本编辑器layedit,调用setContent方法会报错
    sqlserver2008事务日志已满
    解决asp.net上传文件时文件太大导致的错误
    完美版js金钱正则表达式校验
    jQuery实现清空table表格除首行外的所有数据
    textArea中的maxlength是无效的 解决办法
    jquery根据name属性查找
    fileupload页面跳转找不到原页面的解决方法
    xml获取属性值的方法
    读FCL源码系列之List<T>---让你知其所以然---内含疑问求大神指点
  • 原文地址:https://www.cnblogs.com/MrZhujl/p/9879552.html
Copyright © 2011-2022 走看看