Javascript笔记-定义对象的几种方式
来源:互联网 发布:linux 磁盘使用情况 编辑:程序博客网 时间:2024/04/24 20:40
JavaScript中定义对象的几种方式(JavaScript中没有类的概念,只有对象):
1) 基于已有对象扩充其属性和方法:
var object = new Object();
object.name = "zhangsan";
object.sayName = function(name)
{
this.name = name;
alert(this.name);
}
object.sayName("lisi");
2)工厂方式
function createObject()
{
var object = new Object();
object.username = "zhangsan";
object.password = "123";
object.get = function()
{
alert(this.username + ", " + this.password);
}
return object;
}
var object1 = createObject();
var object2 = createObject();
object1.get();
带参数的构造方法:
function createObject(username, password)
{
var object = new Object();
object.username = username;
object.password = password;
object.get = function()
{
alert(this.username + ", " + this.password);
}
return object;
}
var object1 = createObject("zhangsan", "123");
object1.get();
让一个函数对象被多个对象所共享,而不是每一个对象拥有一个函数对象。
function get()
{
alert(this.username + ", " + this.password);
}
function createObject(username, password)
{
var object = new Object();
object.username = username;
object.password = password;
object.get = get;
return object;
}
var object = createObject("zhangsan", "123");
var object2 = createObject("lisi", "456");
object.get();
object2.get();
3) 构造函数方式
function Person()
{
//在执行第一行代码前,js引擎会为我们生成一个对象
this.username = "zhangsan";
this.password = "123";
this.getInfo = function()
{
alert(this.username + ", " + this.password);
}
//此处有一个隐藏的return语句,用于将之前生成的对象返回
}
var person = new Person();
person.getInfo();
可以在构造对象时传递参数
function Person(username, password)
{
this.username = username;
this.password = password;
this.getInfo = function()
{
alert(this.username + ", " + this.password);
}
}
var person = new Person("zhangsan", "123");
person.getInfo();
4)原型(“prototype”)方式
//使用原型(prototype)方式创建对象
function Person()
{
}
Person.prototype.username = "zhangsan";
Person.prototype.password = "123";
Person.prototype.getInfo = function()
{
alert(this.username + ", " + this.password);
}
var person = new Person();
var person2 = new Person();
person.username = "lisi";
person.getInfo();
person2.getInfo();
*****************
{
}
Person.prototype.username = new Array();
Person.prototype.password = "123";
Person.prototype.getInfo = function()
{
alert(this.username + ", " + this.password);
}
var person = new Person();
var person2 = new Person();
person.username.push("zhangsan");
person.username.push("lisi");
person.password = "456";
person.getInfo();
person2.getInfo();
如果使用原型方式对象,那么生成的所有对象会共享原型中的属性,
这样一个对象改变了该属性也会反应到其他对象当中。
单纯使用原型方式定义对象无法在构造函数中为属性赋初值,只能在对象生成后再去改变属性值。
使用原型+构造函数方式来定义对象,对象之间的属性互不干扰,各个对象间共享同一个方法
//使用原型+构造函数方式来定义对象
function Person()
{
this.username = new Array();
this.password = "123";
}
Person.prototype.getInfo = function()
{
alert(this.username + ", " + this.password);
}
var p = new Person();
var p2 = new Person();
p.username.push("zhangsan");
p2.username.push("lisi");
p.getInfo();
p2.getInfo();
5) 动态原型方式:在构造函数中通过标志量让所有对象共享一个方法,而每个对象拥有自己的属性。
function Person()
{
this.username = "zhangsan";
this.password = "123";
if(typeof Person.flag == "undefined")
{
alert("invoked");
Person.prototype.getInfo = function()
{
alert(this.username + ", " + this.password);
}
Person.flag = true;
}
}
var p = new Person();
var p2 = new Person();
p.getInfo();
p2.getInfo();
- Javascript笔记-定义对象的几种方式
- Javascript对象定义的几种方式
- javascript定义类或对象的几种方式
- javascript 中定义类和对象的几种方式
- JavaScript JS中定义对象的几种方式
- JavaScript中定义对象的几种方式
- Javascript笔记——对象的几种生成方式
- JavaScript定义类的几种方式
- javascript定义函数的几种方式
- JavaScript定义类的几种方式
- JavaScript定义类的几种方式
- JavaScript定义类的几种方式
- JavaScript定义类的几种方式
- Javascript定义函数的几种方式
- JavaScript定义类的几种方式
- javascript定义函数的几种方式
- JavaScript定义对象的几种方法
- JavaScript中对象的定义和继承的几种方式
- 20120511 BMXAA4407E - A nested exception caused the workflow process to fail begin
- 计算二叉树的结点个数
- 重装windows后修复grub2引导
- Ogre1.7.2 + CEGUI0.7.5配置
- Everyday a English
- Javascript笔记-定义对象的几种方式
- 集合的运算
- ubuntu 安装Matlab 解决显示中文乱码
- 201205012_oracle中minus的用法
- 栈的顺序存储结构与操作
- 一个复杂一点的单向链表
- 线上行为分析和建模原理
- 谷歌拼音输入法研究笔记
- ArcGIS Configuration Keywords含义简单讲解