主页 > 专题教程 > javascript > js基础 >
来源:自学PHP网 时间:2018-02-08 10:24 作者: 阅读:次
[导读] 在JavaScript中没有类的概念,而是基于原型拷贝(称为原型对象)。对象是对具有某些特性的具体事物的抽象。编程语言中的对象实际上是对现实世界中对象的抽象和模拟。...
|
对象是对具有某些特性的具体事物的抽象。编程语言中的对象实际上是对现实世界中对象的抽象和模拟。JavaScript支持对象,其它如C++,Java等高级编程语言都有很强的对象表达和处理能力。在编程世界中,数据和处理数据的方法结合在一起就构成了对象。 JavaScript是一种基于对象(Object-based)的编程语言,其本质是面向对象。在JavaScript中没有类的概念,而是基于原型拷贝(称为原型对象)。 最简单的创建对象的方法是通过函数来创建对象,此时函数称为类模板,它相当于高级编程语言中的类的作用。在定义函数之后,可以使用
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); //输出:广州
在函数内部通过
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
我们知道,在类中除了有类的属性之外,还应该有类的方法。如何在类模板中创建类的方法呢?如果要创建共有的方法,可以通过
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份这样的拷贝,非常占用内存(在高级编程语言中,对象的属性和方法指向的是同一份拷贝)。在后面我们会讲到通过原型链的方式来解决这个问题。 我们还可以通过
var cat = new Object();
var arr = new Array("a1","a2","a3");
构造函数是一种特殊的函数,它具备了创建对象并初始化对象的功能,正是由于这种构造对象的特性,才把这种类型的特殊函数称为构造函数。JavaScript提供了一个构造空对象的特殊构造函数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 a in p1){
alert(a); //循环获取所有a对象显示声明的属性
}
注意,如果要在循环中获取对象的属性,不能够使用
......
for(var a in p1){
alert(a + ":" +p1.a); //该方式获取的p1.a的值为undefined
alert(a + ":" + p1[a]) //正确获取属性的方式
}
下面是类和对象中一些有用的方法。
关于这些方法在后面介绍对象原型的时候还会详细介绍。 最后提一点是JavaScript中提供了一种主动释放内存的方法:delete 对象名称.属性。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com