[JavaScript学习]JavaScript简单对象的创建 - Web前端
作者:98wpeu发布时间:2026-08-27分类:网页前端技术浏览:2
在上一篇文章中我们介绍了"JavaScript面向对象-原型的重写"。今天将继续学习其他知识:JavaScript简单对象的创建,貌似有点反过来学习了。

对象是对具有某些特性的具体事物的抽象。编程语言中的对象实际上是对现实世界中对象的抽象和模拟。javascript支持对象,其它如C++,java等高级编程语言都有很强的对象表单和处理能力。在编程世界中,数据和处理数据的方法结合在一起就构成了对象。
JavaScript是一种基于对象(Object-based)的编程语言,气本质是面向对象。在JavaScript中没有类的概念,而是基于原型拷贝(称为原型对象)。
通过函数创建对象
最简单的创建对象的方法是通过函数来创建对象,此时函数称为类模板,它相当于高级编程语言中的类的作用。在定义函数之后,可以使用new关键字和函数名一起创建新的对象,并把它赋值给一个变量,这时定义的函数实际上就是一个构造函数。在第一函数时,使用this关键字来代表将来所创建的对象。下面是一个例子:
function Person(name,age){
this.name = name; //定义一个Person的属性为name
this.age = age; //定义一个Person的属性为age
this.address = "上海";
}
//通过函数创建一个对象
var p1 = new Person("张三",20);
alert(p1.name); // 输出名字为:张三
//创建第二个对象
var p2 = new Person("李四",22);
p2.address = "广州"; //修改p2对象的address属性
alert(p2.address); //输出:广州在函数内部通过var关键字定义的属性是私有属性,属于局部变量,而不是类的属性。这个属性不能被对象所使用。
function Person(name,age){
this.name = name; //定义一个Person的属性为name
this.age = age; //定义一个Person的属性为age
var address = "上海"; //私有属性
}
var p1 = new Person("张三",20);
alert(p1.address); //undefined我们知道,在类中除了有类的属性之外,还应该有类的方法。如何在类模板中创建类的方法呢?如果要创建共有的方法,可以通过this.fn = function(){}的方式来创建,如果要创建私有的方法,可以通过function fn2(){}的方式来创建。例如:
function Person(name,age){
this.name = name; //定义一个Person的属性为name
this.age = age; //定义一个Person的属性为age
this.say = function(){ //创建一个公共的类方法
alert("大家好!");
};
function dosomething(){ //创建一个私有的方法
alert("ok");
}
}
var p1 = new Person("张三",20);
alert(p1.name+" 说 "+p1.say()); //输出:张三 说 大家好使用函数来创建对象的缺点是:当通过类模板来创建了多个对象实例的时候,内存中会存在多个对象属性和方法的拷贝。也就是说,通过Person类创建了对象p1,内存中会有p1对象的name、age属性和say()方法,如果在创建一个对象p2,又会有p2对象的name、age属性和say()方法,创建100个属性就会有100份这样的拷贝,非常占用内存(在高级编程语言中,对象的属性和方法指向的是同一份拷贝)。在后面我们会降到通过原型链的方式来解决这个问题。
通过new()运算符和Object()构造函数来创建对象
我们还可以通过new()运算符来创建对象实例。要创建一个对象,只需要使用new运算符,然后跟上要创建对象的构造函数即可。例如,常用的构造函数包括Object()、Array()、date()等等。这些构造函数都是Javascript的内置函数。new()原宿风返回所创建对象的引用,程序应该把这个引用赋值给某个变量,并通过变量来访问所创建的对象。下面是使用构造函数创建对象的一些例子:
var cat = new Object();
var arr = new array("a1","a2","a3");构造函数是一种特殊的函数,它具备了创建对象并初始化对象的功能,正是由于这种构造对象的特性,才把这种类型的特殊函数称为构造函数。JavaScript提供了一个构造空对象的特殊构造函数Object(),可以用它来构造一个空的对象,并通过扩展这个对象来构造需要的对象。使用Object()创建对象时,需要把new运算符的返回值赋值给某个变量,并通过该变量来引用创建的对象。注意,指定给对象的属性隶属于对象,并且不能使用var关键字来声明。使用Object()构造函数来创建对象的一般格式为:
var obj = new Object();
例如构建一个对象的过程为:
var person = new Object(); person.name = "张三"; person.age = 20;
对象的常用操作
我们除了使用对象.属性名称的方法来调用对象的属性之外,还可以使用对象["属性名称"]的方法来调用属性。例如:
function Person(name,age){
this.name = name; //定义一个Person的属性为name
this.age = age; //定义一个Person的属性为age
this.say = function(){ //创建一个公共的类方法
alert("大家好!");
};
}
var p1 = new Person("张三",20);
alert(p1.name); //对象.属性名称
alert(p1["age"]); //对象["属性名称"]我们可以使用for(var 属性 in 对象)的方式来循环获取对象的所有显示声明的属性:
......
for(var a in p1){
alert(a); //循环获取所有a对象显示声明的属性
}注意,如果要在循环中获取对象的属性,不能够使用对象.属性名的方式,而应该使用对象[属性名]的方式,例如:
......
for(var a in p1){
alert(a + ":" +p1.a); //该方式获取的p1.a的值为undefined
alert(a + ":" + p1[a]) //正确获取属性的方式
}下面是类和对象中一些有用的方法。
instanceof:判断一个对象是不是某种类型。
constructor:返回对象的构造函数。
prototype:获取类的PRototype对象。
propertyIsEnumerable(property):是否是可枚举的属性。
hasOwnProperty(property):是否属于本类定义的属性。
isPrototypeOf(Object):是否是指定类的prototype。
toString():返回对象对应的字符串。
valueOf():返回对象对应的原始类型值。
关于这些方法在后面介绍对象原型的时候还会详细介绍。
最后提一点是JavaScript中提供了一种主动释放内存的方法:delete 对象名称.属性。
返回javascript教程主目录>>
相关推荐
- [JavaScript学习]JavaScript事件-事件流 - Web前端
- 分享五种运用JS进行数据裁剪处理方式 - Web前端
- [JavaScript学习]JavaScript面向对象-原型的重写 - Web前端
- [JavaScript学习]JavaScript文档对象模型-样式表的操作 - Web前端
- HTML5 Canvas的文本如何实现垂直对齐 - Web前端
- [JavaScript学习]JavaScript浏览器对象-window对象 - Web前端
- 谈谈关于CSS&CSS3中伪类选择器的应用 - Web前端
- [JavaScript学习]JavaScript浏览器对象-navigator对象 - Web前端
- 分享表单焦点的一些常用用法 - Web前端
- 谈谈关于JavaScript中的类和继承 - Web前端
- 网页前端技术排行
-
- 1[Web前端]用javascript实现默认图片替代未显示的图片 - Web前端
- 2分析Iconfont-阿里巴巴矢量常用图标库 - Web前端
- 3jQuery实例教程:制作网页中可折叠的面板 - Web前端
- 4【第六章】Foundation之按钮和下拉功能 - Web前端
- 5基于jquery的滚动条滚动固定div(附演示下载) - Web前端
- 6jQuery编写widget的一些技巧分享 - Web前端
- 7分享精心挑选的12款优秀jQuery Ajax分页插件和教程 - Web前端
- 8jQuery实现鼠标移到元素上动态提示消息框效果 - Web前端
- 9在Mac/PC上远程调试iPhone/iPad上的网页 - Web前端
- 最近发表
-
- WordPress随机显示特色图片插件:Random Post Thumbnails
- KeePass实现Chrome浏览器自动填充密码方法一
- LNMP一键包nginx 301强制跳转到https教程
- KeePass实现Chrome浏览器自动填充密码方法二
- #建站# 免费的VPS管理软件Xshell8/Xftp8中文版下载
- 使用Xshell 8连接VPS教程_电脑登录vps的方法
- WordPress评论界面添加烟花????效果
- 不同浏览器书签同步方案:坚果云+Floccus_详细使用教程
- iOS端KeePassXC客户端APP:Strongbox Password Safe
- 给WordPress评论中的Gravatar头像图片添加ALT属性


