主页 > 专题教程 > 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