美文网首页
JavaScript面向对象编程

JavaScript面向对象编程

作者: 黄培忠 | 来源:发表于2017-03-02 14:35 被阅读0次

JavaScript的面向对象编程和大多数其他语言,比如Java、C#的面向对象是不太一样的,熟悉Java的明白面向对象的两个基本概念:

1、类:类是对象的类型模板,例如:定义Student类来表示学生,类本身是一种类型,Student表示学生类型,但不表示任何具体的某个学生;

2、实例:实例是根据类创建的对象,例如:根据Student类可以创建出xiaohuang、xiaoming、xiaozhang等多个实例,每个实例表示一个具体的学生,他们全部是属于Student类型

在JavaScript中,不区分类和实例的概念,而是通过原型(prototype)来实现面向对象编程

原型:指的是当我们想要创建xiaohuang这个具体的学生时,我们并没有一个Student类型可用,我们可以用这么一个现成的对象:

var robot = {

      name: 'Robot',

      height: 1.6,

      run: function () {

      console.log(this.name + ' is running...');

      }

};

可以看到robot对象有名字,有身高,会跑步,我们可以用来创建“xiaohuang”;

例如:

var Student = {

      name: 'Robot',

      height: 1.2,

      run: function () {

     console.log(this.name + ' is running...');

     }

};

var xiaohuang = {

      name: '小黄'

};

      xiaohuang.__proto__ = Student;

最后一行代码把xiaohuang的原型指向了Student:

xiaohuang.name;//‘小黄’

xiaohuang.run(); //小黄  is running...

xiaohuang有自己的属性,但并没有定义run()方法,不过,小黄从Student继承而来,只要Student有run方法,xiaohuang也可以调用

JavaScript的原型链和Java的class区别在于,它没有class的概念,所有的对象都是实例,所谓的继承关系是把一个对象的原型指向了另外一个对象而已

如果你把xiaohuang的原型指向了其他对象:

var Bird = {

      fly: function () {

      console.log(this.name + ' is flying...');

      }

};

      xiaohuang.__proto__ = Bird;

xiaohuang.fly();//小黄 is flying...

在JavaScript代码运行期间,你可以把xiaohuang从Student编程Bird,或者其他对象

注意:

在编写JavaScript代码是,不要直接用obj._ptoto_去改变一个对象的原型,并且低版本的IE也无法使用_ptoto_,Object.create()方法可以传入一个原型对象,并创建一个基于该原型的新对象,但是新对象什么属性都没有,所以我们可以编写一个函数来创建xiaohuang

// 原型对象:

var Student = {

      name: 'Robot',

      height: 1.2,

      run: function () {

             console.log(this.name + ' is running...');

      }

};

function createStudent(name) {

// 基于Student原型创建一个新对象:

      var s = Object.create(Student);

// 初始化新对象:

      s.name = name;

      return s;

}

var xiaohuang = createStudent('小黄');

xiaohuang.run(); // 小黄 is running...

xiaohuang.__proto__ === Student; // true

这是创建原型继承的一种方法

相关文章

  • 构造函数与 new 命令

    JavaScript 语言具有很强的面向对象编程能力,本章介绍 JavaScript 如何进行面向对象编程。 对象...

  • Javascript面向对象编程

    阮一峰文档备忘 Javascript 面向对象编程(一):介绍封装 Javascript 面向对象编程(二):介绍...

  • JS创建对象方案(一)

    5.1 JavaScript的面向对象 JavaScript其实支持多种编程范式的,包括函数式编程和面向对象编程:...

  • JavaScript学习笔记(一)

    Javascript面向对象 1. 面向对象编程介绍 1.1 两大编程思想 面向过程 & 面向对象 1.2 面向过...

  • JavaScript学习

    javascript面向对象 初学javascript,感觉javascript的面向对象编程还是很有意思的,在此...

  • javascript的面向对象

    javascript面向对象 初学javascript,感觉javascript的面向对象编程还是很有意思的,在此...

  • ajax

    1. 面向对象 javascript 具有面向过程,面向对象,函数式编程的特点 javascript 重要 原型/...

  • javascript 面向对象编程

    引自:阮一峰的博客Javascript面向对象编程(一):封装Javascript面向对象编程(二):构造函数的继...

  • javascript面向对象编程

    javascript面向对象编程一(封装) 通俗易懂绝对干货 JS面向对象编程

  • JavaScript学习笔记(五)

    主要源于廖雪峰老师的JavaScript教程 面向对象编程 1. 简介 JavaScript的面向对象编程和大多数...

网友评论

      本文标题:JavaScript面向对象编程

      本文链接:https://www.haomeiwen.com/subject/jawhgttx.html