前  言

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. 【★】RSA-什么是不对称加密算法?

    不对称加密算法RSA浅析 本文主要介绍不对称加密算法中最精炼的RSA算法.我们先说结论,也就是RSA算法怎么算,然后再讲为什么. 随便选取两个不同的大素数p和q,N=p*q,r=(p-1)*(q-1) ...

  2. 转:【Java集合源码剖析】Java集合框架

    转载轻注明出处:http://blog.csdn.net/ns_code/article/details/35564663   Java集合工具包位于Java.util包下,包含了很多常用的数据结构, ...

  3. 个人作业3——个人总结(Alpha阶段)

    个人总结 Alpha阶段总结: 起初关于手机app的开发真的一无所知,选了一条较远的路走(使用 Android Studio 来开发 Android 应用更加方便,而我们选用 Eclipse 开发 A ...

  4. 团队作业1——团队展示&博客作业查重系统

    团队展示: 1.队名:六个核桃 2.队员学号: 王婧(201421123065).柯怡芳(201421123067组长).陈艺菡(201421123068). 钱惠(201421123071).尼玛( ...

  5. KKlist团队目录

    KKlist团队目录 一.Daily Scrum Meeting[Alpha] 4.22 day one 4.23 day two 4.24 day three 4.25 day four 4.26 ...

  6. 201521123003《Java程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 1.List中指定元素的删除(题目4-1) 1.1 实验总结 我们利用Sca ...

  7. 201521123073 《Java程序设计》第5周学习总结

    1. 本周学习总结 2. 书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结果. 1.2 ...

  8. 201521123005《java程序设计》第三周学习总结

    1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.使用思维导图将这些碎片化的概念.知识组织起来.使用工具画出本周学习到的知识点. 参考资料: 百度脑图 XMind 2. 书面作业 ·Q ...

  9. 小Writeup

    Misc 100 下载文件之后是一个zip压缩包.因为一开始没有给任何提示信息,题目也什么都没说,爆破了一会无果.同时不是伪加密,所以应该是明文攻击.之后官方给出提示,是一个网址. F12进入调试,发 ...

  10. 201521123092《java程序设计》第十一周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 2.1互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) ...