前  言

S     N

今天给大家详解一下面向对象编程(简称OOP)基础,OOP 语言使我们有能力定义自己的对象和变量类型 。对象拥有属性和方法 所以今天就给大家详解对象和类 。

1-1简介

1、语言的分类:
                ①  面向机器:汇编语言
                ②  面向过程:C语言
                ③  面向对象: C++ java PHP 等
  2、面向过程与面向对象
              ①  面向过程:专注于如何解决一个问题的过程步骤,编程特点是由一个个的函数去实现每一步的过程步骤,没有类和对象的概念。
              ②  面向对象:专注于由哪一个对象来解决这个问题,编程特点是出现了一个类,从类中拿到对象,由这个对象去解决具体问题。
      总结:    对于调用者来说,面向过程需要调用者自己去实现各种函数,而面向对象,只需要告诉调用者对象中具体方法的功能而不需要调用者了解方法中的实现细节。
            
           [面向对象的三大特征] 继承、封装、多态
            
          JS可以模拟实现继承和封装,但是无法模拟实现多态,所以我们说JS是一门基于对象的语言,而并非是面向对象的语言

1-2类和对象

1、类:一类具有想用特征(属性)和行为(方法)的集合,
    例:人类-->属性:身高、体重、性别    方法:吃饭、说话、走路
2、对象:从类中拿出具有确定属性值和方法的个体。
    例:小明-->属性:身高180,体重180 方法:说话-->我叫小明,身高180。
最重要的类和对象的关系:
  类是抽象的,对象是具体的(类是对象的抽象化,对象是类的具体化)。
       类:是一个抽象的概念只能说类有属性和方法,但是不能给属性赋具体的值
               比如,人类有名,但是不能说人类的姓名叫什么。。。

  对象:是一个具体的个例,是将类中的属性进行具体赋值而来的个体。
             比如,小明是人类的一个个体,可以说小明的姓名叫小明,也就是小明对人类的每一个属性进行了具体的赋值,那么小明就是由人类产生的一个对象。
    

1-3使用类和对象的步骤

  ① 创建一个类(构造函数):类名必须使用大驼峰法则,即每个单词首字母都要大写。
function 类名(属性1){
this.属性1 = 属性1;
this.方法 = function(){
//方法中要调用自身属性,必须使用this,属性
}
}
     ②通过类,实例化(new)出一个对象。
    var  obj = new 类名(属性1的具体值);
               obj.属性;调用属性。
               obj.方法();调用方法。
注意事项:
   >>> 通过类名,nwe出一个对象的过程,叫做"类的实例话"
     >>> 类中的this,会在实例化的时候。指向新new出的对象。 所以,this.属性this.方法,实际上是将属性和方法绑定在即将new出的对象上面。
     >>> 在类中,要调用自身属性,必须使用this.属性名,如果直接使用变量名,则无法访问对应的属性。
     >>> 类名必须使用大驼峰法则,注意与普通函数区分。

1-4OOP中的两个重要属性

  ① constructor: 返回当前对象的构造函数。
         >>> XiaoMing.constructor == Person;  √
       
  ② instanceof: 检测一个对象,是不是一个类的示例;
           >>> XiaoMing instanceof Person   √XiaoMing是通过Person类new出的
           >>> XiaoMing instanceof Object   √ 所有对象都是Object的实例
           >>> Person instanceof Object √ 函数本身也是对象
请看以下代码  ↓↓↓
function Person(name,age){
this.name = name;
this.age = age;
}
var XiaoMing = new Person();
XiaoMing.age = ;
XiaoMing.name = "李四"; console.log(XiaoMing);
console.log(XiaoMing.constructor == Person); console.log(XiaoMing instanceof Person);
console.log(XiaoMinginstanceof Object);
console.log(Person instanceof Object);

1-5广义对象与狭义对象

① 狭义对象: 只有属性和方法,除此之外没有任何其他内容。
       var obj = {}     var obj = new Object(); 
② 广义对象: 除了用字面量声明的基本数据类型之外,JS中万物皆对象。 换句话说,只要能够添加属性和方法的变量,都可以称为对象;
     *         var s = "123";   // 不是对象
     *         s.name = "aaa";
     *         console.log(typeof s); // String
     *         console.log(s.name); // undefined 字面量声明的字符串不是对象,不能添加属性;
     *
     *         var s = new String("123");   // 是对象
     *         s.name = "aaa";
     *         console.log(typeof s); // Object
     *         console.log(s.name); // "aaa" 使用new关键声明的字符串是对象,可以添加属性和方法
var s = ""; // 不是对象
console.log(typeof(s));
console.log(s); s.name = "字符串";
console.log(typeof(s));
console.log(s);
console.log(s.name); var s1 = new String("");//是对象
console.log(typeof(s1));
console.log(s1); s1.name = "字符串";
console.log(typeof(s1));
console.log(s1);
console.log(s1.name);

  后  序

S     N

      嗯! 今天就先给大家讲解这么多啦,毕竟是一些入门的知识,更深入的还需要大家自己学习不是 。就这样吧还是希望给大家一点帮助。

javascript-OOP基础详解的更多相关文章

  1. javaScript基础详解(1)

    javaScript基础详解 首先讲javaScript的摆放位置:<script> 与 </script> 可以放在head和body之间,也可以body中或者head中 J ...

  2. Android中Canvas绘图基础详解(附源码下载) (转)

    Android中Canvas绘图基础详解(附源码下载) 原文链接  http://blog.csdn.net/iispring/article/details/49770651   AndroidCa ...

  3. 深入浅出DOM基础——《DOM探索之基础详解篇》学习笔记

    来源于:https://github.com/jawil/blog/issues/9 之前通过深入学习DOM的相关知识,看了慕课网DOM探索之基础详解篇这个视频(在最近看第三遍的时候,准备记录一点东西 ...

  4. java继承基础详解

    java继承基础详解 继承是一种由已存在的类型创建一个或多个子类的机制,即在现有类的基础上构建子类. 在java中使用关键字extends表示继承关系. 基本语法结构: 访问控制符 class 子类名 ...

  5. java封装基础详解

    java封装基础详解 java的封装性即是信息隐藏,把对象的属性和行为结合成一个相同的独立单体,并尽可能地隐藏对象的内部细节. 封装的特性是对属性来讲的. 封装的目标就是要实现软件部件的"高 ...

  6. Dom探索之基础详解

    认识DOM DOM级别 注::DOM 0级标准实际并不存在,只是历史坐标系的一个参照点而已,具体的说,它指IE4.0和Netscape Navigator4.0最初支持的DHTML. 节点类型 注:1 ...

  7. 从mixin到new和prototype:Javascript原型机制详解

    从mixin到new和prototype:Javascript原型机制详解   这是一篇markdown格式的文章,更好的阅读体验请访问我的github,移动端请访问我的博客 继承是为了实现方法的复用 ...

  8. JavaScript严格模式详解

    转载自阮一峰的博客 Javascript 严格模式详解   作者: 阮一峰 一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict m ...

  9. [转]javascript console 函数详解 js开发调试的利器

    javascript console 函数详解 js开发调试的利器   分步阅读 Console 是用于显示 JS和 DOM 对象信息的单独窗口.并且向 JS 中注入1个 console 对象,使用该 ...

  10. javascript 节点属性详解

    javascript 节点属性详解 根据 DOM,html 文档中的每个成分都是一个节点 DOM 是这样规定的:整个文档是一个文档节点每个 html 标签是一个元素节点包含在于 html 元素中的文本 ...

随机推荐

  1. 【Java IO流】对象的序列化和反序列化

    对象的序列化和反序列化 1)对象序列化,就是将Object对象转换成byte序列,反之叫对象的反序列化. 2)序列化流(ObjectOutputStream),是字节的过滤流—— writeObjec ...

  2. vSphere笔记01~02

    Vmware vsphere 虚拟化 云和大数据的底层!!!! 分类 1.开源:openstack:Linux:难(无图形化) nosqleasystack公司 2.企业版本:vsphere sdn! ...

  3. 【Java并发编程】之六:Runnable和Thread实现多线程的区别(含代码)

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/17161237 Java中实现多线程有两种方法:继承Thread类.实现Runnable接口 ...

  4. 201521123035《Java程序设计》第四周学习总结

    本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 本周还讲了注释与类设计.老师用例子向我们展示实际生活中一个类里面包含了哪些属性,并由此联想到如果自 ...

  5. 使用electron将应用程序加入到系统托盘

    博主电脑

  6. 如何使用IntelliJ IDEA的Favorites来管理项目中的常用代码

    http://www.cnblogs.com/deng-cc/p/6530279.html

  7. 用户登陆注册【JDBC版】

    前言 在讲解Web开发模式的时候,曾经写过XML版的用户登陆注册案例!现在在原有的项目上,使用数据库版来完成用户的登陆注册!如果不了解的朋友,可以看看我Web开发模式的博文! 本来使用的是XML文件作 ...

  8. Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'zhongfucheng.user' does

    编写第一个Hibernate程序的时候,就发现出现了错误 Exception in thread "main" org.hibernate.exception.SQLGrammar ...

  9. Spring - BeanPostProcessor接口(后处理器)讲解

    概述: BeanPostProcessor接口是众多Spring提供给开发者的bean生命周期内自定义逻辑拓展接口中的一个,其他还有类似InitializingBean,DisposableBean, ...

  10. Identifying Duplicate Indexes

    本文是在阅读<Troubleshooting SQL Server>->Chapter 5: Missing Indexes->Identifying Duplicate In ...