《JavaScript高级程序设计》(1)—&6.对象的创建及相关模式
来源:互联网 发布:刮眉毛会变浓吗 知乎 编辑:程序博客网 时间:2024/04/28 10:16
一、对象的概念理解
先来看一个简单的对象定义代码:
var person = new Object();person.name = "Nicholas";person.age = 29 ;person.job = "Software";person.sayName = function(){ alert(this.name);}
这其中创建了一个名为person的对象,并为他添加了三个属性。sayName()方法用来显示this.name。
ECMAScript中含有两种属性:数据属性和访问器属性
1.数据属性包含如下四个行为特性(具体功能不做详述)
【【Configurable】】;
【【Enumerable】】;
【【Writable】】;
【【Value】】;
2.访问器属性包含的特性
【【Configurable】】;
【【Enumerable】】;
【【Get】】;
【【Set】】;
3.多属性定义操作符Object.defineProperties()
4.读取属性特性操作符Object.getOwnPropertyDescription()
二、对象的创建
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 person1 = createPerson("Nicholas",29,"Software Engineer");var person2 = createPerson("Greg",27,"Doctor");
工厂模式解决了ECMAScript无法创建类的问题,即用函数封装以特定接口创建对象的细节。(但无法解决对象识别问题)。
2.构造函数模式
function Person (name, age, job){ this.name = name; this.age = age; this.job = job; this.sayName = function(){ alert(this.name); }}var person1 = new Person("Nicholas",29,"Software Engineer");var person2 = new Person("Greg",27,"Doctor");
与工厂模式的区别从代码上可以很明显看出两个区别:一个是this的引用,另一个是用new Person 代替了createPerson。
总的来说就是:构造函数模式没有显示地创建对象;直接将属性和方法赋给了this对象;没有return语句。
构造函数和普通函数最显著的一个区别就是对于new操作符的调用。
构造函数的缺点:
每个方法都要在每个实例上重新创建一遍。(注意,在ECMAScript中,函数即对象),所以容易导致不同的作用域链和标识符解析。此外还有一个更大的问题,那就是在全局作用域中定义的函数实际上只能被某个对象调用,这样全局作用于将变得过于狭窄。如果对象需要定义很多方法,那么就要定义很多个全局函数,那么就会丧失应用类型的封装性。(所以才会又引出另一个模式)
- 《JavaScript高级程序设计》(1)—&6.对象的创建及相关模式
- JavaScript高级程序设计之面向对象的程序设计之创建对象之工厂模式第6.2.1讲笔记
- 《JavaScript高级程序设计》--创建对象1
- 《JavaScript高级程序设计》创建对象之原型模式
- JavaScript面向对象程序设计—创建对象的模式
- JavaScript高级程序设计之面向对象的程序设计之创建对象之 构造函数模式第6.2.2讲笔记
- JavaScript高级程序设计之面向对象的程序设计之创建对象之原型模式 第6.2.3讲笔记
- JavaScript高级程序设计之面向对象的程序设计之创建对象之动态原型模式 第6.2.5讲笔记
- javascript创建对象总结(javascript高级程序设计)
- JavaScript高级程序设计【面向对象-创建对象】
- 【JavaScript高级程序设计】对象的创建与继承
- javascript高级程序设计笔记3-对象的创建
- javascript高级程序设计读书笔记———创建对象
- JavaScript高级程序设计-学习笔记4(创建对象)
- <JavaScript高级程序设计>笔记二: 创建对象
- JavaScript高级程序设计之面向对象的程序设计之创建对象之组合使用构造函数模式和原型模式 第6.2.4讲笔记
- JavaScript面向对象的程序设计1(创建对象)
- JavaScript高级程序设计4--面向对象的程序设计(上)
- JAVA MD5的误区
- dos攻击
- GL_AMBIENT、GL_DIFFUSE、GL_SPECULAR,GL_SHININESS,GL_EMISSION,GL_COLOR_INDEXES的区别
- 从输入网址到显示网页的过程分析
- TCP/IP数据报格式
- 《JavaScript高级程序设计》(1)—&6.对象的创建及相关模式
- Java虚拟机 垃圾回收 之 引用计数
- java.lang.UnsatisfiedLinkError: Native method not found:问题解决
- 用hibernate+注解实现各种关系映射
- android notification总结
- 关于多维数组一点的小技巧
- 2015-12-22
- Objective-C中的属性和实例变量
- (九十四)函数和二维数组