`

JavaScript面向对象编程

阅读更多
我们使用JavaScript为实现以下面向对象特性:
1.对象、类; 2.封装; 3.继承

一、对象
在JavaScript中创建一个对象非常简单,我们可以使用内建的Object对象来创建一个对象:

var myObj = new Object;
myObj.name = 'sam';
myObj.age = 24;


同样我们也可以使用JSON(JavaScript Object Notation)来创建一个对象:
var myObj ={name:'sam',age:24};



二、类

JavaScript通过构造函数和原型对象(prototype)来实现类的创建:

function Person(name,age){  //定义构造方法
    this.name = name;
    this.age = age;
}

var sam = new Person('sam',24);
alert(sam.name);  //输出结果为 sam

var bob = new Person('bob',30);
alert(bob.age);  //输出结果为 30



下面将在Person类中添加一下方法:
function Person(name,age){
    this.name = name;
    this.age = age;
    this.introduceSelf = function(){
       alert('I am '+name+', I am '+age+' years old.');
    }
}

var sam = new Person('sam',24);
sam.introduceSelf();  //输出结果为:  I am sam, I am 24 years old.

var bob = new Person('bob',30);
bob.introduceSelf();  //输出结果为:  I am bob, I am 30 years old.




上面的添加方法的方式不是很好,因为introduceSelf函数对于所有Pesron的实例来说不,都是一样的,我们不希望在实例级别加上一个对于所有实例来说都是一样的方法。这里我们要引入原型对象(prototype)

function Person(name,age){//定义构造方法(类)
   this.name = name;
   this.age = age;
}

Person.prototype.kind = 'animal'; //在原型对象中添加一下属性kind

//创建两个实例
var p1 = new Person('sam',24);
var p2 = new Person('bob',30);

//访问这两个实例的kind属性
alert(p1.kind); //输出结果animal
alert(p2.kind); //输出结果animal



通过上面的例子,我们可以看到函数的原型对象对于所有的实例来说是共享的,并且属性的访问方式和实例本身的属性文章方式一样

如果修改这个属性呢?
p1.kind = 'male';
alert(p1.kind); //输出结果 male
alert(p2.kind); //输出结果 animal



对于属性的访问,JavaScript会从对象的本身开始查找,如果找到则返回找到的值,如果没有,才会在其原型对象中查找

回到原来的例子,在构造函数Person的原型对象上添加一个方法,这样这个方法就会被所有的Person对象共享:
Person.prototype.introduceSelf = function(){
   alert('I am '+this.name+' , I am '+this.age+' years old');
}
var p1 = new Person('sam',24);
var p2 = new Person('bob',30);
p1.introduceSelf();  //输出结果为:I am sam, I am 24 years old
p2.introduceSelf();  //输出结果为:I am bob, I am 30 years old



三、多态
JavaScript允许我们将任意一个函数分配给对象的一个属性。当使用obj.function的语法调用函数时,将把函数原来定义this的指向当前这个对象的obj。所以,我们可以通过定义有相同的方法的对象,来简单地实现多态(polymorphism)
//定义一个dogSpeek函数
function dogSpeek(){
   alert('I am '+this.name);
}

//定义一个Dog类
function Dog(){
   this.name = name;
   this.speek = dogSpeek();//将dogSpeek函数赋给Dog的speek属性
}

//定义一个catSpeek函数
function catSpeek(){
   alert('I am '+this.name);
}

//定义一个Cat类
function Cat(){
   this.name = name;
   this.speek = catSpeek();//将catSpeek函数赋给Cat的speek属性
}

var dog = new Dog;
dog.speek();//输出'I am dog'
var cat = new Cat;
cat.speek();//输出'I am cat'

对于同一个方法,不同类的对象就展现出不同的行为,这样就实现了多态性。



四、继承
分享到:
评论

相关推荐

    Javascript面向对象编程.

    在提供的资源中,《代码之美》PDF文件可能包含了关于编程实践和代码风格的指导,而《Javascript面向对象编程》PPT可能更具体地阐述了JavaScript OOP的细节和示例。学习这些材料将有助于深入理解JavaScript的面向对象...

    JavaScript面向对象编程指南.pdf

    JavaScript作为一门浏览器语言的核心思想;面向对象编程的基础知识及其在... 《JavaScript面向对象编程指南》着重介绍JavaScript在面向对象方面的特性,展示如何构建强健的、可维护的、功能强大的应用程序及程序库

    JavaScript面向对象编程指南

    《JavaScript面向对象编程指南》内容包括:JavaScript作为一门浏览器语言的..., 《JavaScript面向对象编程指南》着重介绍JavaScript在面向对象方面的特性,展示如何构建强健的、可维护的、功能强大的应用程序及程序库。

    JavaScript面向对象编程指南(第2版).rar

    JavaScript是一种广泛...通过深入学习这本《JavaScript面向对象编程指南(第2版)》,开发者不仅能掌握JavaScript的面向对象编程基础,还能了解到实际项目中如何有效地运用这些知识,提升编程技巧和解决问题的能力。

    Javascript面向对象编程

    ### JavaScript面向对象编程详解 #### 一、引言 JavaScript作为一种广泛使用的脚本语言,在Web开发领域占据着举足轻重的地位。尽管JavaScript本质上是一种基于原型的语言,但它也支持面向对象编程的一些特性,使得...

    JavaScript面向对象编程指南 pdf

    下面将详细探讨JavaScript面向对象编程的基本原理、特性以及实际应用。 1. **类与对象** - 在JavaScript中,对象是键值对的集合,可以通过字面量语法或构造函数创建。例如: ```javascript const person = { ...

    JavaScript面向对象编程指南完整版

    JavaScript面向对象编程指南是完整的扫描版...

    javascript面向对象编程指南 2nd

    javascript面向对象编程指南 2nd英文版,英文名:Object-Oriented JavaScript。 What you will learn from this book The basics of object-oriented programming, and how to apply it in the JavaScript ...

    JavaScript面向对象编程.pdf

    JavaScript面向对象编程.pdf

    javascript面向对象编程

    资源名称:Javascript面向对象编程   内容简介: 从语言的视角来看,面向对象的程序设计和面向对象的Javascript 语言绝对不是什么摩登的  东西;Javascript 最开始就是被设计成一...

    JavaScript面向对象编程指南 完整版

    JavaScript面向对象编程指南完整版是扫描的....

Global site tag (gtag.js) - Google Analytics