javascript——面向对象

内容介绍
  1. js面向(基于)对象编程—类(原型对象)与对象(实例)
  2. js面向(基于)对象编程—构造方法和this

无论你是学习java,还是php或者c#都要对javascript要有深入的了解,现在的网页只要有动态效果就要用到javascript,javascript是必学内容,重点是学习javascript的面向对象编程。

学习目标:
  1. 初步掌握js中的类(原形对象)和对象
  2. 什么是成员变量和成员方法
  3. 掌握构造方法的使用

js面向对象特征介绍

javascript是一种面向(基于)对象的动态脚本语言,是一种基于对象(Object)和事件驱动(EventDriven)并具有安全性能的脚本语言。他具有面向对象语言所特有的各种特性,比如封装、继承及多态等。但对于大多数人说,我们只把javascript作为一个函数式语言,只把他用于一 些简单的前端数据输入验证及实现一些简单的页面动态效果等,我们没能完全把握动态语言的各种特性。在很多优秀的Ajax框架中,比如EXtJs、 JQuery等,大量使用了javascript的面向对象特性,要使用好ext技术,javascript的高级特性,面向对象语言特性是我们必须完全把握的。
封装:javascript只有私有和公有这两个封装方式
继承:不是通过关键字extends,而是通过对象冒充的方式来达到继承的效果
多态:javascript是天生的多态,它本身就无态,无态就是多态的一种体现。

在学习本章前,我们有必要给大家明确几个概念,这样大家在后续学习中才不会犯晕:
  • javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象。

特别说明:基于对象也好,面向对象也好实际上都是一对象的概念来编写程序,从本质上并无区别,所以这两个概念在我们的课程中是一样的。
  • 因为javascript中是没有class(类),它换了个名称,称为原型对象,这两个概念从在编程中发挥的作用看都是一个意思,为了统一叫法,我们这里就统一叫类。

澄清概念
在 js 中基于对象 == js 面向对象
在 js 中没有类class,但是它取了一个新的名字叫 原型对象,因此 类==原型对象

js面向(基于)对象编程——类(原型匹配)与对象


js面向(基于)对象
计算机语言的发展是向接近人的思维方式演变的,这是一个大趋势。
js引入了面向对象的思想,js不是纯面向对象的,我们可以认为它是基于面向对象的。

汇编语言 [面向机器]
c语言 [面向过程]
java语言 [面向对象]
js [支持面向对象]

类(原型对象)和对象(实例)的区别和联系

  1. 类(原型对象)是抽象的,概念的,代表一类事物,比如人,猫...
  2. 对象是具体的,实际的,代表一个具体事物
  3. 类(原型对象)是对象实例的模版,对象实例是类的一个个体

类(原型对象)—如何自定义类(原型对象)和对象

  1. 工厂方法—使用new Object创建对象并添加相关属性
  2. 使用构造函数来定义类(原型对象)
  3. 使用prototype
  4. 构造函数及原型混合方式
  5. 动态原型方式

先讲第二种方法:
使用构造函数来定义类(原型对象)

基本语法:
function 类名/原型对象名(){}

创建对象:
var 对象名=new 类名();

对象—特别说明
  • 在js中一切都是对象
<html>  
<head>
<script language="javascript">

function Person(){
}
var a=new Person();
window.alert(a.constructor);//a对象实例的构造函数
window.alert(typeof a);//a的类型是什么
var b=123;
window.alert(b.constructor);//b对象实例的构造函数
window.alert(typeof b);//b的类型是什么
var c="123";
window.alert(c.constructor);//c对象实例的构造函数
window.alert(typeof c);//c的类型是什么

//Person也是对象 再次说明了js中一切都是对象
window.alert(Person.constructor);

//思考:如何判断一个对象实例是不是Person类型?
if(a instanceof Person){
//如果这个实例是Person这种类型,会返回一个真,否则返回假
window.alert("a是person");
}

//或者
if(a.constructor==Person){
//a对象实例的构造函数就是Person
window.alert("a是Person");
}

</script>
</head>
<body></body>
</html>

下面看一个对象的例子:

<html>  
<head>
<script language="javascript">

//js中没有class,怎么定义原型对象或者类呢,用function

//这里就是定义一个Cat类。是一个类还是函数,主要看你怎么去用它
function Cat(){
}

//如果你这样用,很神奇,主要看你怎样用
// Cat();//就是函数
// var cat1=new Cat();//这就是类
//这时Cat1就是一个对象(实例)
//属性怎么给,javascript比较松散,可以动态的添加属性

var cat1=new Cat();

cat1.name="小白";
cat1.age=3;
cat1.color="白色";

//从上面的代码我们可以看出
//1.js中的对象的属性可以动态的添加
//2.属性没有限制

window.alert(cat1.name); //打印输出小白

//没有定义的会报undefined
window.alert(cat1.hobby);
</script>
</head>
<body></body>
</html>

更多相关文章

  1. Javascript sort()不适用于Chrome中超过10个对象的数组
  2. 在jQuery的$.post中调用函数时,Undefined不是对象
  3. 如何使函数等到对象的值未定义为js setTimeout
  4. 如何在javascript中合并2个对象[重复]
  5. JavaScript学习07 内置对象
  6. javascript的密封对象之seal(),isSealed()方法
  7. JavaScript String(字符串对象)
  8. AngularJS(1.5.8) - 如何直接从获取json对象的控制器中填充选择选
  9. 使用append方法将对象转换为字符串

随机推荐

  1. 这篇文章带你彻底理解synchronized关键字
  2. 聊聊java中NIO的增强版AIO
  3. 如果你现在的生活呆腻了,尝试着去改变一下
  4. java中的final关键字解析
  5. android与服务器交互方式
  6. 2021.1.15 ——运算符及关键字
  7. Android动态化方案
  8. 状态机设计
  9. 聊聊java中的注解
  10. 授权与认证实战