十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
js当然有类的概念,而且它和java一样,被设计成纯粹的面向对象的语言。js是弱类型语言,但这个并不意味着它没有类的概念。很明显地,我们经常能看到new Date()、new Array()之类的调用。这不就是类吗?
主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、成都响应式网站建设、程序开发、微网站、微信平台小程序开发等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的成都网站设计、做网站、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体,具备承接不同规模与类型的建设项目的能力。
一、定义类
那我们如何在js中自定义一个类呢?其实应该换个说法,我们该怎么获取一个某种自定义类型的对象。
// 自定义类Class
function Class(){
}
// 实例化Class
var clazz = new Class();
没错,上面就是一个自定义类型对象的获取方式。我们将一个函数视作构造函数,然后配合new关键字调用这个函数,它就会返回某一类型的对象。如果我们执行clazz instanceof Class,返回结果就是true,说明clazz确实是Class类的实例。
基于题主应该对java比较了解,那么我就将上面的js代码翻译成对应的java代码以便理解:
public class Class{
}
Class clazz = new Class();
与Java一样,js中所有对象都是默认继承自Object类的,所以无论是js还是java,执行clazz instanceof Object返回的都是true。
二、成员变量
我们知道,所谓成员变量,是指这个类的实例对象具有哪些属性。先看看Java中如何定义成员变量:
public Class {
public String name;
public int length = 0;
}
然后对照js代码:
function Class(){
this.name = null;
this.length = 0;
}
这里引出一个this,在js中,简单来讲,this就是指向当前对象,但实际上js中的this并不好理解,这里也不会试图讲清楚js中this怎么用。
javascript五种基本类型记的方法分别是:
1、string : 数据外面有 ‘’ 或者 “” 把类型归类为字符串!; 可以表达任意数据,或者说任何类型数据都可以用字符串的形式表示。
2、number : 数字 (没有整形和浮点型的区别:整数和小数都是number类型,)。
3、 boolean :只有两个表达值: true为真 , false 为假一般用作程序逻辑的判断,控制程序的流程。
4、undefined : 变量声明未赋值的时候,计算机默认变量值为 undefined。
5、null (空) : 可以通过将变量的值设置为 null 来清空变量。
JavaScript基本数据类型有:
1、数值类型:与强类型语言如C、Java不同,JavaScript的数值类型不仅包括所有的整形变量,也包括所有的浮点型变量。JavaScript语言中的数值都是以IEEE 754双精度浮点数格式保存。
2、字符串类型:JavaScript的子串富川必须用引号括起来,此处的引号既可以是单引号,也可以是双引号。
javascript有类的概念。
js里面类通过function进行定义,有些类似c++的struct定义。
代码示例:
function MyClass(){
this.a = '2';
this.show=function(){
alert('1');
}
}
var myClass = new MyClass();
alert(myClass.a);//获取属性
myClass.show();//调用类方法
JavaScript 是面向对象的语言,引用数据类型都是对象,包括函数也是对象,同时还可以通过 Object 对象自定义对象。
但是,和其他面向对象语言(如 Java 等高级语言)比,也有很大差异,JS 中没有类或接口的概念,即不能直接定义抽象的类,也不能直接实现继承。不过,为了编程的方便,我们可以在 JS 中模拟类和继承的行为。
创建对象实例或类(虽然没有类的概念,但是可以把用于创建新对象的对象看作类),可以通过构造函数来实现,构造函数就是具有一系列属性和行为作为函数体的函数,可以通过函数参数传入值。它就相当于 Java 中类的构造函数,需要时可以通过 var instanceObj = new ConstructorFunc(para1,para2,...) 来创建对象(实例)。
JS 的对象中还有一个重要概念,即原型。每个对象都有原型,原型也是一个对象,可以看做是构造函数的映像,是创建实例的模型。对象(类)的属性 prototype 即是对原型对象的引用,创建实例后,也有属性 __proto__ 指向原型对象,但该属性是隐含的。
由于不断创造新对象(实例),一级一级的传递原型对象,即可构成原型链。通过原型链,即可实现继承。首先将父类对象的实例给子类的原型 ChildCons.prototype = new ParentCons(),再在子类构造函数中调用父类构造函数将继承的属性初始化。继承的变通方法还有很多,可以参考一些资料。
javascript中的基本数据类型有null,undefined,boolean,number,string
复杂数据类型为object
在javascript中申明变量使用的关键字都是var,这点与其他的编程语言不尽相同,但是javascript亦含有五种基本的数据类型(也可以说是简单数据类型)和一种复杂数据类型,它们分别是:Undefined,Null,Boolean,Number和String。复杂数据类型—Object。
1、typeof
typeof这个关键字是一定要说的,因为javascript是松散类型的,在变量申明时并没有使用与之类型相对应的关键字,如果在代码中想要获知某个变量的基本数据量,就可以使用typeof。这里要注意的是typeof返回的是字符串类型。
(1)、"undefined"——未申明,或者变量的值即为undefined或者未初始化;
(2)、"boolean" ——如果这变量的值是布尔类型;
(3)、"string" ——值是字符串类型;
(4)、"number" ——值是数字类型;
(5)、"object" ——对象或者值为null;
(6)、"function" ——函数。
在js中函数也是对象,但是函数又要一些区别与其他对象的特定,所以ECMAScript在使用typeof的时候将其区分开来。
2、Undefined
这是一个很有意思的数据类型,因为它的值只有一个,那就是undefined。在申明变量时如果没有将变量赋值的话这个变量也是属于Undefined类型的。
如果一个变量没有申明就直接去访问解释器会报错误信息,但是这样的变量如果使用typeof返回的结果也是"undefined"。
3、Null
Null也是一个只有一个值得数据类型,它的值就是null,任何变量只要给其赋值为null的话这个变量的数据类型就是Null类型。null值表示控对象指针,所以申明的变量要是想用来保存对象并且在申明之初还不能确定具体保存哪个对象的时候就将其赋值为null,在使用的时候只要检查该变量是否为null就可以知道该变量是否保存了对象。
其实null和undefined还是有点微妙的关系的,在javascript中undefined值派生自null,因此ECMA-26规定了它们的相等性测试为true。
在实际的编程中我们没有必要将一个变量赋值为undefined,但是却有很多情况下要将变量赋值为null,将变量赋值为null可以便于我们将它与undefined区分也便于垃圾回收处理。
4、Boolean
在javascript中Boolean类型用还是比较多的一种简单数据类型,它有两个值,分别是true和false,因为在javascript中字母是区分大小写的,所以True和False不是Boolean的值。
调用Boolean()方法可以将任何类型的值转化成与之相对应的Boolean类型的值,也就是可以将其转化成true或者false。
5、Number
javascript为了支持各种数值类型,定义了不同数值字面量格式。
最基本的是字面量是十进制,此外还有八进制和十六进制数的字面量。八进制在js中表示是第一位一定要是0,后面就是八进制字数序列(0~7),如果字面量值超出了范围,前面的0会被忽略,后面的值会被当成十进制解析。十六进制字面量前两位必须是0x,后面跟十六进制数字(0~9及A~F)。字母A~F不区分大小写。
在进行数值计算时,不论是八进制还是十六进制最终都会被转化成十进制数值。
6、Object
Object类是所有JavaScript类的基类(父类),提供了一种创建自定义对象的简单方式,不再需要程序员定义构造函数。Object类主要属性:1.constructor:对象的构造函数。2.prototype:获得类的prototype对象,static性质。