js面向对象编程的一些笔记

在很多后台语言如c++,java,php等都是面向对象的编程语言,js当中,面向对象是不够完善的,虽然js当中有很多对象,但是面向对象不能和对象划等号,所以今天小编给大家具体讲解一下js当中的面向对象

一.什么叫面向对象

简单的说,面向对象有三大特征:封装,继承,多态

1、封装:把相关的信息(无论数据还是方法)存储在对象的能力
2、继承:由另一个类(或多个类)得来的属性和方法的能力
3、多态: 编写能以多种方法运行的函数或方法的能力

二.面向对象的优点

1、易维护
采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。
2、质量高
在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。
3、效率高
在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。
4、易扩展
由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。

三.js当中面向对象的写法

1.工厂方式

 代码如下 复制代码

function createPerson(name,age)
{
var person=new object();
person.name=name;
person.age=age;
person.showPerson=function()
{
alert(“我叫”+this.name+”,我今年”+this.age+”岁”);
}
}
var p1=createPerson(“huanghao”,23);
p1.showPerson();//我叫huanghao,我今年23岁

2.构造函数的方式

 代码如下 复制代码

function createPerson(name,age)
{
this.name=name;
this.age=age;
this.showPerson=function()
{
alert(“我叫”+this.name+”,我今年”+this.age+”岁”);
}
}
var p1=new createPerson(“huanghao”,23);
p1.showPerson();

注意:前两种方式有弊端,就是每次new一次,都会重新建立自己的函数,假设我又新建一个var p2=new createPerson(“xiaotian”,20);接着我们弹一下alert(p1.showPerson===p2.showPerson),惊奇的发现结果为false,这也就意味这两次new出来的对象的showPerson方法不是同一个方法,所以原型方式就应运而生

3.原型方式/构造与原型方式混合

 代码如下 复制代码

function createPerson(name,age)
{
this.name=name;
this.age=age;
}
createPerson.prototype.showPerson=function()
{
alert(“我叫”+this.name+”,我今年”+this.age+”岁”);
}
var p1=new createPerson(“huanghao”,23);
p1.showPerson();

同样是再创建一个var p2=new createPerson(“blue”,33);   alert(p1.showPerson===p2.showPerson)//true

上面这种方式属于原型与构造函数混合的方式,也是我们在js面向对象时经常使用的方式,这种方式的写法是,将属性写在构造函数里,方法写在prototype里

四,js面向对象中的this指向问题

js面向对象通常会让人疑惑的地方就是this指向问题,在小编的经验看来,通常情况下会有两个地方在this指向问题出错,第一个是运用定时器的时候,第二就是给对象加事件的时候,因此需要特别注意

小结:以上就是js忠的面向对象,运用第三种方法可以完善的模拟出主流编程语言的面向对象,而且在很多面试当中都要问到的问题,

时间: 2024-07-31 19:29:08

js面向对象编程的一些笔记的相关文章

JS面向对象编程详解_javascript技巧

序言 在JavaScript的大世界里讨论面向对象,都要提到两点:1.JavaScript是一门基于原型的面向对象语言 2.模拟类语言的面向对象方式.对于为什么要模拟类语言的面向对象,我个人认为:某些情况下,原型模式能够提供一定的便利,但在复杂的应用中,基于原型的面向对象系统在抽象性与继承性方面差强人意.由于JavaScript是唯一一个被各大浏览器支持的脚本语言,所以各路高手不得不使用各种方法来提高语言的便利性,优化的结果就是其编写的代码越来越像类语言中的面向对象方式,从而也掩盖了JavaSc

JS面向对象编程浅析_javascript技巧

在AJAX兴起以前,很多人写JS可以说都是毫无章法可言的,基本上是想到什么就写什么,就是一个接一个的函数function,遇到重复的还得copy,如果一不小心函数重名了,还真不知道从何开始查找错误,因为大家总是用面向过程的编程思想来写JS代码,而且也由于网络上充斥了太多小"巧"的JS代码段,很多都是随意而为,很不规范,这也就造成了大家对JS的"误解",一味的认为它就是一个辅助的小东东,而不适合做大的东西开发.但是自从AJAX兴起后,大量的JS代码编写要求人们具备像写

js面向对象 编程: JavaScript 面向对象编程,严格过程的标准化编程法,目前为止最好的 JS 生成对象代码结构

市面上流行了很多 JavaScript 面向对象的编程方法,其中不少都有好些问题.这里总结最正确的 JavaScript 面向对象编程模式.对于类 Special 继承自类 Common 继承自类 Super 的情况,一个 Special 对象的创建,详细说来,应该经历以下步骤.1 确定继承关系1.1 读取 Special 的父类,发现是 Common1.2 读取 Common 的父类,发现是 Super1.3 读取 Super 的父类,发现没有了(隐形父类 Object)2 加载类结构(如果没

详解JS面向对象编程_javascript技巧

因为JavaScript是基于原型(prototype)的,没有类的概念(ES6有了,这个暂且不谈),我们能接触到的都是对象,真正做到了一切皆为对象 所以我们再说对象就有些模糊了,很多同学会搞混类型的对象和对象本身这个概念,我们在接下来的术语中不提对象,我们使用和Java类似的方式,方便理解 方式一 类(函数模拟) function Person(name,id){ //实例变量可以被继承 this.name = name; //私有变量无法被继承 var id = id; //私有函数无法被继

JS面向对象编程 for Cookie_js面向对象

各位如果有更好的见解可讨论下! 复制代码 代码如下: /* * Js Class Cookie * Author:Mr Co */ var Cookie = function(/*Cookie名称*/name){ this.$name = name; var allcookies = document.cookie; if(allcookies == '') return; var cookies = allcookies.split(';'); var cookie = null; for(v

php面向对象编程的继承性

为什么需要继承? <?php //开发一套学生管理系统(小学生pupil,大学生,...) //父类 class Stu{ public $name; protected $age; protected $grade; public function showInfo(){ echo $this->name."||".$this->age; } } //子类 class Pupil extends stu{ //小学生 public function testing(

面向对象编程方式实现四则运算和计算矩形面积

用Javascript实现类似两个选项卡切换的效果,用面向对象编程的方式,实现四则运算和计算矩形面积: CatView.php: <html> <head> <meta http-equiv="content-type" content="text/html;charset=GBK" /> <script language="javascript"> <!-- function selType

深入剖析JavaScript面向对象编程_javascript技巧

二. Javascript 面向对象编程:构造函数的继承 本节主要介绍,如何生成一个"继承"多个对象的实例. 比如,现在有一个"动物"对象的构造函数, function Animal(){ this.species = "动物"; } 还有一个"猫"对象的构造函数, function Cat(name,color){ this.name = name; this.color = color; } 怎样才能使"猫&qu

简单理解PHP的面向对象编程方式_php基础

与大多数可以面向对象的编程语言不一样, PHP 是同时支持面向过程和面向对象的编程方式, PHP 开发者可以在面向过程和面向对象二者中自由选择其一或是混合使用,不过由于在 PHP5 之前的版本中, PHP 主要还是面向过程的编程语言,因此大多时候 PHP 开发者应该还是选择面向过程的方式进行开发,事实上, Kayo 认为即使一个 PHP 开发者完全不使用面向对象,他也能开发出很出色的 PHP 程序,我们可以想象, Web 页面的解析本身就很过程化,在 HTML 中嵌入面向过程处理的代码是非常自然