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

  在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. Google C++ 编程规范总结

    一.头文件 #define 的保护 项目 foo 中的头文件 foo/src/bar/baz.h 按如下方式保护: #ifndef FOO_BAR_BAZ_H_ #define FOO_BAR_BAZ ...

  2. linux 命令 之chomd

    chmod用于改变文件或目录的访问权限.用户用它控制文件或目录的访问权限.该命令有两种用法.一种是包含字母和操作符表达式的文字设定法:另一种是包含数字的数字设定法.  1. 文字设定法 语法:chmo ...

  3. usb mass storage device

    Problem adding USB host device to KVM Windows guest machine. Status: CLOSED CURRENTRELEASE   Aliases ...

  4. Xcode 4 插件制作入门

    转自:http://www.onevcat.com/2013/02/xcode-plugin/ 2014.5.4更新 对于 Xcode 5,本文有些地方显得过时了.Xcode 5 现在已经全面转向了 ...

  5. HDU 4882 ZCC Loves Codefires (贪心)

    ZCC Loves Codefires 题目链接: http://acm.hust.edu.cn/vjudge/contest/121349#problem/B Description Though ...

  6. POJ 1064 Cable master (二分答案)

    题目链接:http://poj.org/problem?id=1064 有n条绳子,长度分别是Li.问你要是从中切出m条长度相同的绳子,问你这m条绳子每条最长是多少. 二分答案,尤其注意精度问题.我觉 ...

  7. Educational Codeforces Round 5 - C. The Labyrinth (dfs联通块操作)

    题目链接:http://codeforces.com/contest/616/problem/C 题意就是 给你一个n行m列的图,让你求’*‘这个元素上下左右相连的连续的’.‘有多少(本身也算一个), ...

  8. JVM 关闭前执行命令的钩子

    Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { public void run() { System.out.prin ...

  9. mysql删除重复记录语句,删除除了 id 号不同,其他都相同的学生冗余信息

    /** 在Mysql下执行: delete from my.stu where id not in( select min(id) id from my.stu group by code) ; 用途 ...

  10. 《精通ASP.NET MVC5》第2章 第一个MVC应用程序

      控制器     public class NewHomeController : Controller     {         // GET: /NewHome/         public ...