一、定义和实例化一个类:

  在OOP的思想中,类是一个很重要的元素,一个类表示了具有相似的一类事物的抽象,通过实例化一个类,可以获得属于该类的一个实例,我们也可以称之为对象。

  在javascript中,我们定义一个函数,也可以看着是类,

 function class(){
code;//类成员的定义以及构造函数
}

  上面class我们可以将他看着为类的构造函数,来实现初始化工作。

  JS中暂时没有CLASS这个类的关键字,所以我们暂时使用function来实现类的定义.

  类在定义好之后,如果没有定义静态方法时,我们是不能直接使用的,我们需要先实例化一个类,当然,JS也不例外的使用NEW这个关键字来实现对类的实例化。

 接上面的代码
var obj = new class();

  我们可以这么简单的理解,在javascript中,现阶段函数和类是就是一个概念,当对一个函数进行nwe操作是,就返回一个对象,如果函数中没有初始化类成员,就会返回一个空对象。当 new一个函数是,这个函数就锁有代表类的构造函数,其中的代码被看做初始化了一个对象。用于表示类的函数我们也称之为构造器。

二、引用对象的属性和方法

  在JAVASCRIPT中,每个对象可以看做是多个属性(方法)的集合,引用一个属性(方法)一般采用 对象名.属性(方法)名 对象名["属性(方法)名"]

  例如:

var arr = new Array();    //定义一个数组
arr.push('xiaozu'); //为数组增加一个元素
arr["push"]("zhangsn"); //使用[]引用对象的属性和方法 var $length = arr.length; //获取数组长度
var $len = arr["length"]; //获取数组长度 document.write($length+"<br>");
document.write($len);

san

三、动态添加、修改、删除对象的属性和方法

  上一节,我们已经了解如何引用一个对象的属性和方法,现在我们来了解如何为一个对象添加、修改或则删除属性和方法。Javascript提供了灵活的机制来修改对象行为,可以动态添加、修改、删除属性和方法

  例如,我们先用类Object来创建一个空对象user:

  添加属性和方法:

 var user = new Object();                    //创建一个空对象user

user.name = 'xiaozu';                        //添加属性
user.age = '18';
user.sex = 'male'; document.write(user.name+"<br />"); //输出这三个语句
document.write(user.age+"<br />");
document.write(user.sex+"<br />"); user.getName =function(){ //添加一个方法
document.write("My name is:"+this.name+"<br/>");
} user.getName(); //调用这个方法

  修改属性和方法:

  修改一个属性和方法的过程就是用新的属性替换旧的属性

  删除属性和方法:

  删除一个属性和方法就是讲其设置为undefined:

user.name = undefined;
user.alert = undefined;

  也可以使用 delete user.name 来删除一个属性

四、 创建无类型对象

  JavaScript中的对象其实就是属性(方法)的一个集合,并没有严格意义上的类的概念。它提供了一众简单的方式来创建对象,通过使用大括号括住多个属性或方法及其定义,这些属性或方法用逗号隔开,用以实现对象的定义。这段代码就直接定义了具有N个属性或方法的对象,其中属性名和其定义之间用冒号(:)隔开。

  <script>
var $obj = {}; //定义个空对象
var $user={
$name:"xiaozu", //定义了name属性,初始化为xiaozu
$sex:"male", //定义了sex属性,初始化为male
hello:function(){ //定义hello方法
document.write("hello,"+this.$name);
}
}
$user.hello();
</script>

五、prototype原型对象,是实现面向对象的一个重要机制,每个函数(function)其实也是一个对象,他们对应的类是“Function”,每个函数对象都具有一个子对象prototype。即prototype表示该函数的原型,而函数也是类,prototype就是表示了一个类的成员的集合。当通过new来获取一个类的对象时,prototype对象的成员都会成为实例化对象的成员。  

function $class1(){
//empty
}
$class1.prototype.method=function(){ //对类的prototype对象进行修改,增加method方法
alert("it is a test method");
}
var $obj1 = new $class1(); //创建类$class1的实例
$obj1.method(); //调用$ogj1的方法method

javascript oop深入学习笔记(一)的更多相关文章

  1. Javascript oop深入学习笔记(三)--javascript中类的实现

    一.类的实现机制 在javascript中可以使用function关键字来定义一个类.在函数内通过this指针引用的变量或则方法都会成为类的成员. function classDemo(){ var ...

  2. javascript oop深入学习笔记(二)--javascript的函数

    一.概述: 函数是进行模块化程序设计的基础, javascript重的的函数不同于其他语言,每个函数都作为一个对象被维护和运行.通过函数对象的性质,可以很方便的将一个函数赋值给一个变量或则讲函数作为参 ...

  3. ArcGIS API for JavaScript 4.2学习笔记[0] AJS4.2概述、新特性、未来产品线计划与AJS笔记目录

    放着好好的成熟的AJS 3.19不学,为什么要去碰乳臭未干的AJS 4.2? 4.2全线基础学习请点击[直达] 4.3及更高版本的补充学习请关注我的博客. ArcGIS API for JavaScr ...

  4. 7 种 Javascript 常用设计模式学习笔记

    7 种 Javascript 常用设计模式学习笔记 由于 JS 或者前端的场景限制,并不是 23 种设计模式都常用. 有的是没有使用场景,有的模式使用场景非常少,所以只是列举 7 个常见的模式 本文的 ...

  5. JavaScript 权威指南-学习笔记(一)

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! ## JavaScript 权威指南-学 ...

  6. JavaScript权威设计--JavaScript函数(简要学习笔记十一)

    1.函数调用的四种方式 第三种:构造函数调用 如果构造函数调用在圆括号内包含一组实参列表,先计算这些实参表达式,然后传入函数内.这和函数调用和方法调用是一致的.但如果构造函数没有形参,JavaScri ...

  7. JavaScript权威设计--JavaScript函数(简要学习笔记十)

    1.函数命名规范 函数命名通常以动词为前缀的词组.通常第一个字符小写.当包含多个单词时,一种约定是将单词以下划线分割,就像"like_Zqz()". 还有一种就是"lik ...

  8. ArcGIS API for JavaScript 4.2学习笔记[1] 显示地图

    ArcGIS API for JavaScript 4.2直接从官网的Sample中学习,API Reference也是从官网翻译理解过来,鉴于网上截稿前还没有人发布过4.2的学习笔记,我就试试吧. ...

  9. 《你不知道的 JavaScript 上卷》 学习笔记

    第一部分: 作用域和闭包 一.作用域 1. 作用域:存储变量并且查找变量的规则 2. 源代码在执行之前(编译)会经历三个步骤: 分词/此法分析:将代码字符串分解成有意义的代码块(词法单元) 解析/语法 ...

随机推荐

  1. POJ 3259 Wormholes(最短路,判断有没有负环回路)

    Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 24249   Accepted: 8652 Descri ...

  2. 转载 C#中静态类和非静态类比较

    转载原地址: http://www.cnblogs.com/NothingIsImpossible/archive/2010/07/28/1786706.html C#静态方法与非静态方法的区别不仅仅 ...

  3. HDU 4463 Outlets (最小生成树)

    题意:给定n个点坐标,并且两个点已经连接,但是其他的都没有连接,但是要找出一条最短的路走过所有的点,并且路线最短. 析:这个想仔细想想,就是应该是最小生成树,把所有两点都可以连接的当作边,然后按最小生 ...

  4. 关于cocoapods添加静态库的奇葩配置

    不多说,直接上代码 当引入这个静态库时,一开始死活在编辑时找不到这个静态库. 直到看到这个贴子:http://stackoverflow.com/questions/19189463/cocoapod ...

  5. Windows-to-go-带着win10满街跑

    一.前言 有句话是这么说的,程序员对工作是时刻准备着的.无论你是长假还是短假,只要有网,你就躲不开客户.这样子,当你外出的时候你可以选择时刻背着电脑,因为你的电脑有着你顺手的开发工具以及开发环境.我们 ...

  6. Http Header Content-Disposition

    Content-Disposition用途 Content-Disposition是为了实现服务器下载文件功能,并可提供文件名. Content-Disposition格式 content-dispo ...

  7. ACID CAP BASE介绍

    ACID ACID,是指数据库管理系统(DBMS)在写入/更新资料的过程中,为保证事务(transaction)是正确可靠的,所必须具备的四个特性:原子性(atomicity,或称不可分割性).一致性 ...

  8. java.lang.OutOfMemory总结分析

    OOM浅析 相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识 ...

  9. 初学Android 二 创建项目以及目录结构

    命令行创建 android create project Usage: android [global options] create project [action options] Global ...

  10. [EntLib]微软企业库5.0 学习之路——第一步、基本入门

    话说在大学的时候帮老师做项目的时候就已经接触过企业库了但是当初一直没明白为什么要用这个,只觉得好麻烦啊,竟然有那么多的乱七八糟的配置(原来我不知道有配置工具可以进行配置,请原谅我的小白). 直到去年在 ...