javascript笔记(一):javascript中的对象和"类"

javascript由三部分组成:
1、核心(ECMAScript) 描述了该语言的语法和基本对象
2、文档对象模型(DOM)描述了处理网页内容的方法和接口
3、浏览器对象模型(BOM)描述了与浏览器进行交互的方法和接口

本文主要探讨核心,ECMAScript虽然是一种面向对象的编程语言,但没有类和接口等基本的结构,只有数据类型和引用类型的区别。引用类型是一种数据结构,用于将数据和功能组织在一起。它也常常被称为类,但这种称呼并不妥当。引用类型的值即是对象。
javascript内置对象,不依赖于宿主环境的一些对象,这些对象在javascript程序执行前就已经存在的。例如Object,Array,String等,只是这些对象是Function的,这点要注意。

1.Object类型
javascript中,大多数引用类型都是Object类型的实例
Object实例的创建方法有两种。第一种是试用new操作符后面跟Object构造函数。如下所示:

var person = new Object();
person.name = "xiaoming";

另一种形式是使用对象字面量表示法:

var person = {
name : "xiaoming" }

第二种形式创建实例的过程中是不会调用Object构造函数的
2.Array类型
Array类型中提供了一系列对数组进行操作的函数,实例的创建方式有很多

var arr1 = new Array();
var arr2 = new Array(size);
var arr3 = new Array(item1,item2...);
var arr4 = [item1,item2...];

创建实例的时候,第四种也不调用构造方法
3.Date类型
Date类型是在早期的java.util.Date的基础上构建的,很多方法类似
创建方式

var now = new Date();//其中,可以传入一些特定的参数

4.RegExp类型
RegExp类型用于支持正则表达式
创建方式

var pattern1 = /pattern/flags;//其中pattern 为一个正则表达式,flags 有三个选项,三种模式(可以选一个也可以组合)
var pattern2 = new RegExp('pattern','flags');//"g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配、多行匹配 
pattern1.test(str); //主要方法,测试是否符合

5.Function类型
每个函数都是一个Function类型的实例,而且都与其他应用类型一样有属性和方法,由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定。js中没有函数重载的概念
创建方式

function func1(..){..};
var func2 = function(..){..};
var func3 = new Function(..,"");// 不推荐使用的方法,该构造函数默认最后一个参数是函数体,可以传入任意多个参数

6.基本包装类型
Boolean,Number,String

var s1 = 'i am string';
var s2 = s1.substring(2);

我们知道,基本类型值不是对象,因而从逻辑上来说不应该有方法。其实,为了让我们能实现这种直观的操作,后台已经自动完成了一系列处理。当第二行代码访问s1时,访问过程处于一种读取模式,也就是要从内存中读取这个字符串的值,而在读取模式中访问字符串时,后台都会进行如下处理,自动创建一个String类型的实例,在该实例上调用指定的方法,销毁实例。表面上看上去就像是基本类型调用方法。
使用new调用三种封装类的构造方法,和不使用new是不一样的。直接调用,不用new是转型函数(我理解的是)

var value = '13'; 
var number = Number(value);
alert(typeof number);       //number

7.一个特别的对象Global
这个对象的特别之处在于,无论从什么角度来看,这个对象都是不存在的。Global对线在某种意义上是作为一个终极的“兜底的对象”来定义的,不属于任何其他对象的属性和方法,都是属于Global的。有eval,parseInt,parseFloat,isNaN,isFinite,decodeURI,encodedURI,encodeURIComponent等方法,还有NaN,Infinity,undefined等属性

prototype属性
javascript中的每个对象都有prototype属性,使您有能力向对象添加属性和方法,Math和JSON这类直接提供方法和属性的不提供prototype属性。
语法

object.prototype.name = vlaue;  //语法

关于prototype属性可以参考这篇文章《javascript必知必会之prototype》

以下整理出ECMAScript的所有对象
1,值属性的全局对象有NaN,Infinity,undefined。
2,函数属性的全局对象有eval,parseInt,parseFloat,isNaN,isFinite,decodeURI,encodedURI,encodeURIComponent
3,构造器(类)属性的全局对象有Object,Function,Array,String,Boolean,Number,Date,RegExp,Error,EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError。
4,其它属性的全局对象可以看成是Java中的静态类,可以直接用类名+点号+方法名使用。有Math,JSON

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值