JavaScript面向对象

面向对象:不了解原理的情况下,会使用功能,不关注内部细节,是一种通用思想

对象:黑盒子 不了解内部的结构,知道表面的各种操作

面向对象编程OOP:

  • 特点:抽象(抓住核心问题),
  • 封装(不考虑内部实现,只考虑功能),
  • 继承(遗传 父母和孩子 从父类继承出一些属性和方法,还可以 有自己的新方法)

多重继承  多态

对象由属性和方法组成

  • 属性-变量:状态 静态
  • 方法-函数:过程 动态

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <script type="text/javascript">
        var a=7;//变量 自由的,不属于任何人
        alert(a);
        var arr=[1,2,3,4,5,6];
        arr.a=12;//属性 非自由,属于一个对象
        alert(arr.a);
        function aa(){
            alert(‘abc‘);//函数:自由
        }
        aa();
        arr.aa= function () {
            alert(‘abcd‘);//方法:非自由 属于对象
        }
        arr.aa();
    
    </script>
    </body>
    </html>

    结果:7       12     abc     abcd

  • this:当前发生事件的对象   当前的方法属于谁
    <script type="text/javascript">
        var arr=[1,2,3,4];
        arr.a=12;
        arr.show=function(){
            alert(this.a);
        }
        arr.show();
    </script>

    12

    <script type="text/javascript">
        window.show=function(){
        alert(this);
        }
        show();
    </script>

    object Window   当前的方法属于谁  属于Window

  • 不能再系统对象中随意添加方法、属性,否则会覆盖已有方法和属性
  • object 对象  没有东西
<script type="text/javascript">
   var obj=new Object();
    obj.name=‘blue‘;
    obj.qq=‘930260035‘;
    obj.showName= function () {
        alert(‘我的名字是:‘+this.name);
    }
    obj.showQQ= function () {
        alert(‘我的qq是:‘+this.qq);
    }
    obj.showName();
    obj.showQQ();
</script>

   

<script type="text/javascript">
    function createPerson(name,qq){//构造函数
       //原料
        var obj=new Object();
        //加工
        obj.name=name;
        obj.qq=qq;
        obj.showName= function () {
            alert(‘我的名字是:‘+this.name);
        };
        obj.showQQ= function () {
            alert(‘我的qq是:‘+this.qq);
        };
        //出厂
        return obj;
    }
    var obj=createPerson(‘blue‘,‘54546466‘);
    obj.showName();
    obj.showQQ();
    var obj2=createPerson(‘张三‘,‘555555555‘);
    obj2.showName();
    obj2.showQQ();
</script>
  • 工厂方式的缺点:没有new    函数重复导致资源浪费
时间: 2024-10-22 21:11:15

JavaScript面向对象的相关文章

JavaScript面向对象及相关知识

最近在学习JavaScript面向对象,写下自己的理解及相关资料,以备查阅. 一.面向对象中涉及的相关几个概念 1.作用域 所谓作用域,就是说属性和函数的可访问范围.在JavaScript中,作用域分为两种.全局作用域和局部作用域. 所有没有var 声明 或 定义于最外层函数和最外层函数外面即为全局作用域.也就是定义可以随意调用. 自定义函数内部用var声明的为局部作用域. var num = 1; //全局作用域 window.onload = function() { //最外层为全局作用域

javascript面向对象之this指针

下午用面向对象的方法写一个幻灯片插件的时候不小心写出了这样的代码: Slider.prototype.auto=function() { setInterval(this.toRun,4000);//注意 } Slider.prototype.toRun=function() { if(this.iNow==this.aA.length - 1) ...... } 在浏览器打开的时候发现幻灯片不能如预期般自动切换,控制台给出了这样的错误提示: this.aA isundefined?然而我已经在

javascript面向对象2

原文:javascript面向对象2 首先我们先创建一个对象 var user = Object(); user.name = "张三"; user.age = 20; user.sex = "男"; 上面呢创建了一个对象,当然创建对象的方法有很多种,但是用这样的方法创建对象比较简单直观,也是JavaScript种创建对象最基本的方法. 同时呢也出现了另外一个弊端,当我们想要创建多个对象的时候,我们就要写很多重复的代码,这样一来就增加了代码量,减少了工作的效率, 为

JavaScript面向对象之类的继承

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

Javascript面向对象特性实现封装、继承、接口详细案例——进级高手篇

Javascript面向对象特性实现(封装.继承.接口) Javascript作为弱类型语言,和Java.php等服务端脚本语言相比,拥有极强的灵活性.对于小型的web需求,在编写javascript时,可以选择面向过程的方式编程,显得高效:但在实际工作中,遇到的项目需求和框架较大的情况下,选择面向对象的方式编程显得尤其重要,Javascript原生语法中没有提供表述面向对象语言特性的关键字和语法(如extends.implement).为了实现这些面向对象的特性,需要额外编写一些代码,如下.

[连载]JavaScript讲义(03)--- JavaScript面向对象编程

[连载]JavaScript讲义(03)--- JavaScript面向对象编程,布布扣,bubuko.com

Javascript面向对象编程(二):构造函数的继承

这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生成实例. 今天要介绍的是,对象之间的"继承"的五种方法. 比如,现在有一个"动物"对象的构造函数. function Animal(){ this.species = "动物"; } 还有一个"猫"对象的构造函数. function Cat(name,color){ this.name = name; this.color = col

Javascript 面向对象编程(一):封装

学习Javascript,最难的地方是什么? 我觉得,Object(对象)最难.因为Javascript的Object模型很独特,和其他语言都不一样,初学者不容易掌握. 下面就是我的学习笔记,希望对大家学习这个部分有所帮助.我主要参考了以下两本书籍: <面向对象的Javascript>(Object-Oriented JavaScript) <Javascript高级程序设计(第二版)>(Professional JavaScript for Web Developers, 2nd

javascript面向对象系列第一篇——构造函数和原型对象

× 目录 [1]构造函数 [2]原型对象 [3]总结 前面的话 一般地,javascript使用构造函数和原型对象来进行面向对象编程,它们的表现与其他面向对象编程语言中的类相似又不同.本文将详细介绍如何用构造函数和原型对象来创建对象 构造函数 构造函数是用new创建对象时调用的函数,与普通唯一的区别是构造函数名应该首字母大写 function Person(){ this.age = 30; } var person1 = new Person(); console.log(person1.ag

《Javascript面向对象精要》笔记

刚读过<Javascript面向对象精要>这本书,在现有的知识体系里面有一些新鲜的认识,记录一下. 原始类型和引用类型 Javascript存在两种类型:原始类型和引用类型.原始类型包括String.Number.Boolean.Null.Undefined,引用类型保存对象,其本质是对象所在内存位置的引用. 原始类型的赋值或者给函数传参,实际上都是传递原始类型值的拷贝: 引用类型则是引用的拷贝.修改其中一个引用的话,其他引用也会受到影响.如果对象中的某个属性也是对象,在对象拷贝时就会引入深拷