• JavaScript面向对象


    一、基础知识分析

    1、类与对象的定义
    类:一群有相同属性与行为集合体(人类:群体概念)
    对象:从类中拿出的具有确定属性值和方法的个体称为对象(个体概念)

    2、类和对象的关系

    类是抽象的,对象是具体的。(类是对象的抽象化,对象是类的具体化)
    通俗来说,类是一个抽象的概念,表示具有相同属性和行为的集合,但是类仅仅表明这类群体具有相同的属性,没有具体的属性值。
     而对象是对类的属性进行具体赋值后,而得到的一个具体的个体;

    3、使用类和对象的步骤
    ①创建一个构造函数(一个类)类名必须要每个单词的首字母大写
    function 类名(){}
    this.属性=属性1;
    this.方法=function(){}
    this指向谁?指向即将调用当前构造函数的对象。
    ②通过类实例化出一个新的对象
    var obj = new 类名(属性-Value)
    原构造函数指向新的object对象;
    obj.方法();调用方法
    obj.属性();调用属性


    4、两个重要的属性:
    constructor:返回当前对象的构造函数。(只有对象才有,返回的属于类)
    zhangsan.constructor==Person
    >>>对象的constructor,位于_protocol_原型对象上
    instanceof判断一个对象是不是某个类的实例
    zhangsan instanceof Person


    5、广义对象与狭义对象
    狭义对象:只有属性方法,除此之外没有任何东西
    var obj = {}; var obj = new Object();
    广义对象:除了用字面量声明的基本数据类型之外,万物皆对象。即能够添加属性方法的变量,就是对象
    var s = "1",不是对象
    var s = new String("1"); 就是对象

    二、this详解

    1、谁最终调用函数,this指向谁。
    ① this指向的,永远只可能是对象!!!!!!
    ② this指向谁,永远不取决于this写在哪!!而是取决于函数在哪调用。
    ③ this指向的对象,我们称之为函数的上下文context,也叫函数的调用者


    2、※※※※※this指向的规律(与函数调用的方式息息相关):
    this指向的情况,取决于函数调用的方式有哪些:
    ① 通过函数名()直接调用:this指向window
    ② 通过对象.函数名()调用的:this指向这个对象
    ③ 函数作为数组的一个元素,通过数组下标调用的:this指向这个数组
    ④ 函数作为window内置函数的回调函数调用:this指向window
    setInterval setTimeout 等...
    ⑤ 函数作为构造函数,用new关键字调用时:this指向新new出的对象

    三、原型与原型链_proto_与prototype

    1、prototype:函数才有prototype。是一个对象指向了当前构造函数的引用地址
    2、_proto_:所有对象都有proto属性,当用构造函数实例化一个对象时,会将新对象的proto属性指向构造函数的prototype
        zhangsan._proto_==Person.prototype √
        所有对象最终都会指向object的prototype


    【原型链】
    1、通过构造函数new出的新对象的proto指向构造函数的prototype
    2、所有函数的protot指向function该内置函数的prototype
    3、非构造函数new出的对象(包括大括号直接声明 new Object() 对象的prototype)的proto指向object的prototype
    4、object的proto指向null

  • 相关阅读:
    OpenStack Paste.ini详解(二)
    OpenStack Paste.ini详解(一)
    PDB调试python代码常用命令
    Devstack 安装OpenStack Pike版本(单机环境)
    Openstack Pycharm 的远程调试
    django Forbidden
    Python 常用命令
    OSI模型和TCP/IP协议族(一)
    ubuntu 下关闭MySql server
    安装ubuntu时的注意事项----个人小总结
  • 原文地址:https://www.cnblogs.com/adaia/p/6854055.html
Copyright © 2020-2023  润新知