美文网首页
面向对象的程序设计

面向对象的程序设计

作者: 哈哈哈哈哈啊啊啊 | 来源:发表于2017-10-13 16:27 被阅读0次

一、理解对象

1.1属性类型

ECMAScript中有两种属性:数据属性和访问器属性
1.1.1数据属性
数据属性包含一个数据值的位置,在这个位置可以读取和写入值,数据属性有4个描述其行为的特性

Configurable:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性,这个值默认为true
Enumerable:表示能否通过for-in循环返回属性,这个值默认为true
Writable:表示能否修改属性的值,这个值默认为true
Value:包含这个属性的数据值。读取属性值的时候,从这个位置读,写入属性值的时候把新值保存在这个位置上,默认为undefined

要修改属性默认的特性,必须使用ECMAScript5的Object.defineProperty()方法,这个方法接收三个参数:属性所在的对象,属性的名字和一个描述符对象。其中描述对象的属性必须是configurable,enumerable,writable,value。设置一个或多个值,可以修改对应的特性值。

1.1.2访问器属性
访问器属性不包含数据值,包含一对儿getter和setter函数
访问器属性有如下4个特性

Configurable:表示能否通过delete删除属性从而重新定义属性,或者能否把属性修改为数据属性
Enumerable:表示能否通过for-in循环返回属性
Get:在读取属性时调用的函数
Set:在写入属性时调用的函数
访问器属性不能直接定义,必须使用Object.defineProperty()来定义

var book={
_year:2017,
edtion:1};
Object.defineProperty(book,"year",{
get:function(){
return this._year;
},
set:function(){
if(newValue>2004){
this._year=newValue;
this.edition+=newValue=2017;
}
}
})

二、 创建对象

2.1工厂模式

function createPerson(name,age,job){
var o=new Object();
o.name=name;
o.age=age;
o.job=job;
o.sayName=function(){
alert(this.name)
}
return o;
}
var person = createPerson('Nichoias',29,'Software Enginner');

函数能够根据接收的参数来构建一个包含所有必要信息的Person对象,可以无数次调用这个函数,二每次都会返回一个包含三个属性一个方法的对象,工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题

2.2 构造函数模式

function Person(name,age,job){
this.name=name;
tihs.age=age;
this.job=job;
this.sayName=function(){
alert(this.name);
}
}
var person1= new Person('haha',12,'IT')

该模式与工厂模式的不同之处

  • 没有显式的创建对象
  • 直接将属性和方法赋给了this对象
  • 没有return语句

要创建person,必须使用new操作符,以这种方式调用构造函数的步骤

  • 创建一个新对象
  • 将构造函数的作用域赋给新对象
  • 执行构造函数中的代码
  • 返回新对象

三、 继承

ECMAScript实现继承主要是依靠原型链,其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法

四、函数表达式

  • 函数表达式不同于函数声明,函数表达式不需要有名字,也叫匿名函数
  • 递归函数应该始终使用arguments.callee来递归地调用自身,不能使用函数名,函数名可能会发生变化
  • 通常,函数的作用域及其所有变量都会在函数执行结束后销毁

五、内存泄露

  • 循环引用导致了内存泄露
  • 由外部函数调用引起的内存泄露
  • 闭包

相关文章

  • 《软件工程》笔记7

    面向对象的实现 面向对象的程序设计最好还是选用面向对象的编程语言。 良好的程序设计风格对于面向对象实现来说格外重要...

  • 第四章 对象与类

    1 面向对象程序设计概述 面向对象程序设计(简称OOP)是当今主流的程序设计范型 Java是完全面向对象的,必须熟...

  • 《Java核心技术卷 I》之 Java对象与类

    Java对象与类 面向对象程序设计 面向对象程序设计,简称OOP,Java语言就是完全面向对象的。 类 类(cla...

  • JavaScript面向对象编程指南--读书笔记(上)

    第一章:面向对象的JavaScript 面向对象的程序设计 面向对象程序设计(oop)中最常用到的概念: 对象、方...

  • python面向对象编程

    面向对象编程(一) 1、面向过程程序设计与面向对象程序设计: 面向过程的程序设计把计算机程序视为一系列的命令集合,...

  • oc编程思想

    面向对象概念 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一...

  • 编程语言基础概念1

    什么是面向对象? 面向对象:指在程序设计中采用封装、继承、多态等设计方法。 什么是面向过程? 面向过程:程序设计按...

  • 面向对象

    title:面向对象tags: 基础,Java 面向对象 面向对象程序设计简介 面向对象的基本思想是使用类、对象、...

  • 三、对象与类

    面向对象程序设计概述 面向对象的程序设计(简称OOP)时当今主流的程序设计范型,已经取代了“结构化”过程化程序设计...

  • JavaSE-面向对象编程

    [TOC] 第一章:面向对象-概述 1.1-什么是面向对象? 概述 面向对象是一种程序设计思想。 程序设计的目的是...

网友评论

      本文标题:面向对象的程序设计

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