JavaScript对象及处识面向对象
对象是什么?
对象是包含相关属性和方法的集合体。
创建对象
在JavaScript中,对象分为两种:自定义对象、内置对象。
自定义对象语法:
var 对象名称=new Object();
示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script type="text/javascript">
var flower = new object();
flower.name="栀子花";
flower.user="观赏";
flower.show = function () {
alert(this.name);
}
flower.show();
</script>
</body>
</html>
内置对象
JavaScript的内置对象是一种特殊的数据,常见的内置对象如下所示,
String (字符串) 对象。
Date (日期) 对象。
Array (数组) 对象。
Boolean (逻辑) 对象。
Math (算数) 对象。
RegExp 对象。
字符串是JavaScript 中一种基本的数据类型,Sring 对象的length属性声明了该字符串中的字符数Sring 类定义了大量的操作字符串的方法,一般分为查找子字符串、截取和拼接字符串匹配正则表达式、改变字符串样式等,如已学习的indexOf( )方法、replacel( )方法。
Date 对象用于处理日期和时间,Date对象会自动把当前日期和时间保存为其初始值,Date对象的大部分方法由如下几类组成。
getx x x: 获取年、月、日、时,分、秒等。
字符串是JavaScript 中一种基本的数据类型,Sring 对象的length属性声明了该字符串中的字符数Sring 类定义了大量的操作字符串的方法,一般分为查找子字符串、截取和拼接字符串匹配正则表达式、改变字符串样式等,如已学习的indexOf( )方法、replacel( )方法。
Date 对象用于处理日期和时间,Date对象会自动把当前日期和时间保存为其初始值,Date对象的大部分方法由如下几类组成。
getx x x: 获取年、月、日、时,分、秒等。
setx x x:设置年、月、日、时、分,秒等。
数组对象的作用是使用单独的变量名来存储一系列的值,数组的常用属性是lengh,代表了这个数组中元素的个数。数组常用的方法有排序、添加和删除元素,拼接另一个数组,转成字符串如sort( ),concat( ),join( )方法等。
Boolean 对象用于将非逻辑值转换为逻辑值(true或者false),在JavaScript 中布尔值是一种基本的数据类型,Boolean对象是一个将布尔值打包的布尔对象。Boolean对象主要用于提供将布尔值转族成字符串的toString( )方法。当调用toString( )方法将布尔值转换成字符串时,JavaScript会将这个布尔值转换成一个临时的Boolean对象,然后调用这个对象的toSring( )方法。
Math 对象的作用是执行常见的算数任务。Math 对象并不像Date 和String 那样的对象,因此没有构造函数Math( ),像Math.round( )这样的函数只能是函数,不能作为某个对象的方法使用。对象中最常用的方法有向上(向下) 取整、四舍五入取整、随机数、返回两个数中大数或小数,如round( )、max( )、min[ )方法等。
数组对象的作用是使用单独的变量名来存储一系列的值,数组的常用属性是lengh,代表了这个数组中元素的个数。数组常用的方法有排序、添加和删除元素,拼接另一个数组,转成字符串如sort( ),concat( ),join( )方法等。
Boolean 对象用于将非逻辑值转换为逻辑值(true或者false),在JavaScript 中布尔值是一种基本的数据类型,Boolean对象是一个将布尔值打包的布尔对象。Boolean对象主要用于提供将布尔值转族成字符串的toString( )方法。当调用toString( )方法将布尔值转换成字符串时,JavaScript会将这个布尔值转换成一个临时的Boolean对象,然后调用这个对象的toSring( )方法。
Math 对象的作用是执行常见的算数任务。Math 对象并不像Date 和String 那样的对象,因此没有构造函数Math( ),像Math.round( )这样的函数只能是函数,不能作为某个对象的方法使用。对象中最常用的方法有向上(向下) 取整、四舍五入取整、随机数、返回两个数中大数或小数,如round( )、max( )、min[ )方法等。
FegExp 对象对我们来说比较陌生,RegExp 是正则表达式的缩写,当需要检索某个文本时可以使用一种模式来措述要检索的内容,RegExp 就是这种模式。简单的模式可以是一个单独的字符,复杂的模式包括了更多的字符,并可用于解析、格式检查、替换等。
构造函数
示例代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script type="text/javascript">
function Flower(name,user) {
this.name=name;
this.user=user;
this.show=function () {
alert(this.name);
}
}
var flower2=new Flower("薰衣草","观赏");
flower2.show();
</script>
</body>
</html>
使用构造函数创建新实例,必须使用new操作符,以这种方式调用构造函数实际上会经历以下四个步骤。
(1)创建一个新对象。
(2)将构造函数的作用域赋给新对象(this就指向了这个新对象)。
(3)执行构造函数中的代码。
(4)返回新对象。
原型对象
在JavaScript中创建的每个函数都有一个prototype 属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。按照字面意思理解,prototype 就是通过调用构造函数而创建的那个对象实例的原型对象,使用原型对象的好处就是可以让所有对象实例共享它所有的属性和方法,也就是说不必在构造函数中定义对象实例的信息,可以您这些信息直接添加到原型对象中,如示例所示。
示例:
function Flower() {
}
function Flower() {
var flower = new Object(); flower.name="薰衣草"; flower.user="观赏"; flower.show=function () { alert(this.name); } return flower; } var f = new Flower(); alert(f.name);原型链
借用构造函数
语法:
apply([thisOjb[,argArray]])
应用某一对象的一个方法,用另一个对象替换当前对象。
call([thisOjb[,arg1[,arg2[, [,argN]]]]])
组合函数
示例:
<script type="text/javascript"> function Humans(name) { this.name=name; this.clothing = ["trousers","dress","jacket"]; } Humans.prototype.sayName = function () { alert(this.name); } function Man(name,age) { Humans.call(this,name); this.age=age; } Man.prototype=new Humans(); Man.prototype.sayAge=function () { alert(this.age); } var man1 = new Man("mary",38); man1.clothing.push("coat"); alert(man1.clothing); man1.sayName(); man1.sayAge(); var man2 = new Man("tom",27); alert(man2.clothing); man2.sayName(); man2.sayAge(); </script>