简述JavaScript的类与对象

JavaScript语言是动态类型的语言,基于对象并由事件驱动。用面向对象的思想来看,它也有类的概念。JavaScript 没有class关键字,就是用function来实现。

1. 实现方式及变量/方法访问域控制

1 function fruit(name, color)
2 {
3     // public variable
4     this.name = name;
5     this.color = color;
6 }

用this来标识变量或方法是public。兴城市费永礼品

1 var apple = new fruit(‘apple‘‘red‘);

跟其他大多数语言一样是用 new 关键字来实例化一个类的对象。这样 apple.name 的值就是 ‘apple‘。内部变量则使用var关键字:

1 function book()
2 {
3     var subject = "welcome to nowamagic.net";   
4 }
5 var b1 = new book();

这个时候访问b1.subject,得到的结果是"undefined"。

2. 类的扩展

JavaScript是动态语言,因此我们可以在类创建之后再给他添加属性(field)或方法。具体做法就是使用prototype:

01 function fruit(name, color)
02 {
03     // public variable
04     this.name = name;
05     this.color = color;
06 }
07 var apple = new fruit(‘apple‘‘red‘);
08 var orange = new fruit(‘orange‘‘yellow‘);
09 //apple.gender = ‘undefined‘
10 fruit.prototype.gender=1;
11 //apple.gender = 1
12 //orange.gender = 1
13 //fruit.prototype.gender = 1

可以看到变量apple, orange都有了gender的属性,且值为1。

也有人把prototype扩展的内容称之为静态方法或属性,我认为这样称呼有些不太合适,因为静态的内容是不能通过对象来访问的,这里则可以,且如果更改apple.gender,不会影响orange.gender的值。另一个理由这里的gender不能像其他语言的静态属性一样直接是用类名来访问:

1 apple.gender = 1   //error : student.gender undefined

只能这样:

1 fruit.prototype.gender    // 值为 1

3. 对象与数组的关系

1 var tom = {};
2 //typeof(tom)  //object
3 tom[‘Email‘]=‘[email protected]‘;
4 // tom.Email  值为 ‘[email protected]‘
5 tom.Website="www.nowamagic.net";
6 // tom["Website"] 值为 "www.nowamagic.net"

由此可以见对象的field可以通过数组的方式访问,反之亦然。使用field的方式访问,从风格上讲更像面向对象的风格,但是是用数组方位在某些遍历对象的时候很是方便。

时间: 2024-08-15 01:57:13

简述JavaScript的类与对象的相关文章

Javascript创建类和对象

现总结一下Javascript创建类和对象的几种方法: 1.原始的创建方法: 1 <script type="text/javascript"> 2 var person = new Object(); 3 person.name="Amy"; 4 person.sex="Woman"; 5 person.show=function(){ 6 document.write("name is: "+this.name

JavaScript定义类与对象的一些方法

最近偶然碰到有朋友问我"hoisting"的问题.即在js里所有变量的声明都是置顶的,而赋值则是在之后发生的.可以看看这个例子: 1 var a = 'global'; 2 (function () { 3     alert(a); 4     var a = 'local'; 5 })(); 大家第一眼看到这个例子觉得输出结果是什么?'global'?还是'local'?其实都不是,输出的是undefined,不用迷惑,我的题外话就是为了讲这个东西的. 其实很简单,看一看JavaS

JavaScript定义类和对象以及实现继承

定义类和对象 工厂模式 function createCar(color, doors, mpg){ var car = {}; car.color = color, car.doors = doors, car.mpg = mpg; car.showColor = function(){alert(this.color);}; return car; } 工厂模式比较简单,所以只适用于创建比较简单的对象. 构造函数方式 function Car(color, doors, mpg){ this

【JavaScript】类继承(对象冒充)和原型继承__深入理解原型和原型链

JavaScript里的继承方式在很多书上分了很多类型和实现方式,大体上就是两种:类继承(对象冒充)和原型继承. 类继承(对象冒充):在函数内部定义自身的属性的方法,子类继承时,用call或apply实现对象冒充,把类型定义的东西都复制过来,这样的继承子类与父类并没有多少关联,不互相影响,有利于保护自身的一些私有属性. 原型继承:每个函数都有自己的原型(prototype)属性,这个属性是在生成实例对象时自动创建的.它本身又是一个对象,拥有能够在实例间共享的属性和方法.而实例本身的属性和方法,则

javascript:类数组 -- 对象

在javascript中,对象与数组都是这门语言的原生规范中的基本数据类型,处于并列的位置. 类数组:本质是一个对象,只是这个 对象  的属性有点特殊,模拟出数组的一些特性. 一般来说,如果我们有一个对象obj和一个数组a: obj["attr1"];    //取obj对象的attr1属性 a[1];              //取数组a中的第二个元素 但是,有些时候,也会将一个对象"伪装"成一个数组来用,我们把这种对象称为"类数组对象",再

JavaScript自定义类和对象的方法

备注:JavaScript中没有类class的概念,一般把原型对象看作类 1. 工厂方法--使用new Object创建对象并添加相关属性 var Obj = new Object;         Obj.name = 'sun';         Obj.showName = function() {    alert('this.name');} 2. 使用构造函数来定义类(原型对象) function Obj(name) {         this.name = name;      

javascript学习笔记---ECMAScriptECMAScript 对象----定义类或对象

使用预定义对象只是面向对象语言的能力的一部分,它真正强大之处在于能够创建自己专用的类和对象. ECMAScript 拥有很多创建对象或类的方法. 原始的方式 因为对象的属性可以在对象创建后动态定义(后绑定),类似下面的代码: var oCar = new Object; oCar.color = "blue"; oCar.doors = 4; oCar.mpg = 25; oCar.showColor = function() { alert(this.color); };不过这里有一

ExtJS教程(2)--- Javascript类和对象基础知识

Javascript中的类其实就是一个function 如下面定义一个Person类 //定义一个类 function Person(){ this.name = 'jaune'; this.age = 18; } //创建一个对象 var person1 = new Person(); console.log(person1); /* * 控制台打出以下内容 * Person {name: "jaune", age: 18} */ 上面是一个简单的定义类及创建类的方法 //定义一个带

JavaScript中的类数组对象

在javascript中,对象与数组都是这门语言的原生规范中的基本数据类型,处于并列的位置. 一般来说,如果我们有一个对象obj和一个数组a: obj["attr1"];    //取obj对象的attr1属性 a[1];   //取数组a中的第二个元素 但是,有些时候,也会将一个对象“伪装”成一个数组来用,我们把这种对象称为“类数组对象”,再此我们可以給它下一个定义,请看如下的代码: var a= {}; var i = 0; for(i=0; i<10 ; i++){ a[i