工厂方式
优点:直观,适合只创建一次的对象缺点:定义的属性和方法只能在该对象中使用
var obj = {};
obj.name = "myname";
obj.password = "mypassword";
obj.login = function(){
};
构造函数方式
优点:动态的传递参数缺点:每创建一个对象就会创建相同的方法函数对象,占用大量内存
function User1(name, password) {
this.name = name;
this.password = password;
this.login = function(name,password){
if(this.name == name && this.password == password) {
return true;
}else {
return false;
}
};
}
原型方式
优点:每次创建对象时都是使用相同prototype中的方法,不会占用重复的内存缺点:无法动态传递构造参数
function User2() {
}
User2.prototype.name = "prototype name";
User2.prototype.password = "prototype password";
User2.prototype.login = function(name,password){
if(this.name == name && this.password == password) {
return true;
} else {
return false;
}
};
构造及原型混合方式
优点:综合了construct及prototype方式的优点,可以动态传递构造参数,并且方法函数对象也只创建一个缺点:函数写在对象外面,不太符合面向对象的思想
function User3(name,password) {
this.name = name;
this.password = password;
}
User3.prototype.login = function(name,password) {
if(this.name == name && this.password == password) {
return true;
} else {
return false;
}
};
动态原型方式
优点:将原型函数写在对象定义里面缺点:不支持继承
function User4(name,password) {
this.name = name;
this.password = password;
if(typeof User4.__initialized == "undefined") {
User4.prototype.login = function(name,password){
if(this.name == name && this.password == password) {
return true;
} else {
return false;
}
};
User4.__initialized = true;
}
}
混合工厂方式
应用场景很少,用起来像真正的构造函数
function login_util(){
var obj = {};
obj.name = "myname";
obj.password = "mypassword";
obj.login = function(){
};
return obj;
}
分享到:
相关推荐
Javascript对象定义的几种方式
### JavaScript对象定义方法详解 #### 一、引言 JavaScript是一种强大的编程语言,在Web开发领域占据主导地位。其中,对象是其核心概念之一,而如何有效地定义和使用对象则是掌握JavaScript的关键技能。本文将深入...
字面量语法是定义JavaScript对象最简单、最常见的方法。通过大括号`{}`来创建一个空对象,然后通过键值对来添加属性和方法。例如: ```javascript var myObject = { name: 'John Doe', age: 30, sayHello: ...
#### 一、JavaScript对象定义及创建方式 - **对象定义**: 在JavaScript中,对象被定义为一系列无序属性的集合,这些属性可以是基本值、其他对象或者函数。 - **对象创建方式**: - **通过`new Object()`创建**: 这种...
首先,手册的前几章会介绍JavaScript对象的基础知识,包括对象的创建、属性和方法的定义,以及对象与数据类型的关联。JavaScript中的对象是基于原型的,这意味着它们可以通过原型链共享属性和方法。此外,还会讲解...
### 深入浅出JavaScript对象模型 #### JavaScript对象的本质 根据ECMA262规范,ECMAScript被定义为一种基于对象的语言而非传统的面向对象语言。这意味着在JavaScript中,对象被视为存储数据的一种大型数组形式,...
在JavaScript中,可以通过构造函数或类来创建对象,并通过定义方法来隐藏具体的实现细节。此外,ES6引入了类的概念,进一步增强了抽象的能力。 **示例代码:** ```javascript class USBDevice { constructor(name)...
### 面向对象JavaScript精要 #### 一、书籍概览 本书《面向对象JavaScript精要》由Nicholas C. Zakas编写,是面向对象编程领域中的权威指南之一,尤其针对JavaScript这门语言。作者深入浅出地介绍了面向对象编程的...
本文将详细介绍JavaScript中的面向对象编程概念和技术,包括类定义、对象创建、继承、封装等内容。 #### 二、类定义和对象创建 ##### 2.1 类定义 在JavaScript中,“类”这一概念并不像在Java或C#这样的强类型...
在讨论JavaScript中定义对象的几种方式之前,我们先理解一下JavaScript中的对象到底是什么。JavaScript是一种基于原型的编程语言,对象是其核心概念之一。对象可以被视为一个容器,存储各种键值对集合,键为属性名,...
创建 JavaScript 对象有两种不同的方法:使用 Object 定义并创建对象的实例,使用函数来定义对象,然后创建新的对象实例。使用 Object 构造函数可以创建一个对象包装器,例如:`var o = new Object(true);`。使用...
本小册"JavaScript对象经典小册 chm"深入探讨了JavaScript中的核心概念——对象和数组,旨在帮助开发者更好地理解和掌握这些基础知识。 一、JavaScript对象 1. 对象概述:JavaScript对象是一种数据结构,它由键值对...
JavaScript中的Math对象的与众不同之处在于,它是一个全局对象...在使用Math对象之前,既不需要将一个变量声明为Math对象,也不需要定义一个新的Math对象,JavaScript将自动地创建好Math对象,我们只须直接使用它即可。
首先,我们回顾一下如何创建一个简单的JavaScript对象。在给定的例子中,`student` 是一个包含 `name`、`age` 和 `location` 属性的对象: ```javascript var student = new Object(); student.name = "Lanny"; ...
3. **原型对象**:`prototype`属性是构造函数的一个属性,用于定义实例的公共属性和方法。当尝试访问对象的一个属性时,JavaScript会首先在当前对象中查找,如果找不到,就会沿着原型链向上查找,直到找到为止。 4....
JavaScript对象模型(Object Model)和执行模型是理解JavaScript工作原理的关键概念。JavaScript是一种基于原型的动态类型语言,其对象模型是其核心特性之一。本文将深入探讨JavaScript的对象模型和执行模型,以及...