JavaScript对象概述
JavaScript是一种面向对象的编程(OOP)语言。如果编程语言为开发人员提供了四个基本功能,则可以将其称为面向对象:
封装:将相关信息,无论是数据还是方法,一起存储在一个对象中的能力。
聚合:在另一个对象中存储一个对象的能力。
继承:一个类能够依靠另一个类(或若干个类)来获得它的一些属性和方法。
多态性:编写一个函数或方法以各种不同方式工作的能力。
对象是由属性组成的。如果一个属性包含一个函数,它被认为是该对象的一个方法,否则该属性被认为是一个属性。
对象属性
对象属性可以是三种原始数据类型中的任何一种,也可以是任何一种抽象数据类型,例如另一个对象。对象属性通常是在对象的方法中内部使用的变量,但也可以是全局可见的变量,在整个页面中使用。
向对象添加属性的语法为:
objectName.objectProperty = propertyValue;
例如:以下代码使用"title"的属性document对象。
var str = document.title;
对象方法
方法是让对象做某事或让某事对它做的函数。函数和方法之间有一个小小的区别--函数是一个独立的语句单元,而方法是附加在一个对象上的,可以通过this关键字来引用。
从显示对象的内容到屏幕,再到对一组局部属性和参数执行复杂的数学运算,方法对所有事情都很有用。
例如:以下是一个简单的示例,说明如何使用write()用来在文档上写入任何内容的文档对象的方法。
document.write("This is test");
自定义对象
所有用户定义的对象和内置对象都是称为的对象的后代Object.
new运算符
new运算符用于创建对象的实例。要创建一个对象,new运算符后跟构造函数方法。
在下面的示例中,构造函数方法是Object(),Array()和Date()。这些构造函数是内置的JavaScript函数。
var employee = new Object(); var books = new Array("C++", "Perl", "Java"); var day = new Date("August 15, 1947");
Object()构造函数
构造函数是创建和初始化对象的函数。 JavaScript提供了一个特殊的构造函数,称为Object()建立对象。的返回值Object()构造函数被分配给一个变量。
该变量包含对新对象的引用。分配给对象的属性不是变量,也没有使用var关键字。
例子1
请尝试以下示例;它演示了如何创建对象。
<html> <head> <title>User-defined objects</title> <script type = "text/javascript"> var book = new Object(); //创建对象 book.subject = "Perl"; //为对象分配属性 book.author = "Mohtashim"; </script> </head> <body> <script type = "text/javascript"> document.write("Book name is : " + book.subject + "<br>"); document.write("Book author is : " + book.author + "<br>"); </script> </body> </html>
Book name is : Perl Book author is : Mohtashim
例子2
本示例演示了如何使用用户定义的函数创建对象。这里this关键字用于引用已传递给函数的对象。
<html> <head> <title>User-defined objects</title> <script type = "text/javascript"> function book(title, author) { this.title = title; this.author = author; } </script> </head> <body> <script type = "text/javascript"> var myBook = new book("Perl", "Mohtashim"); document.write("Book title is : " + myBook.title + "<br>"); document.write("Book author is : " + myBook.author + "<br>"); </script> </body> </html>
Book title is : Perl Book author is : Mohtashim
定义对象的方法
前面的示例演示了构造函数如何创建对象和分配属性。但是我们需要通过为对象分配方法来完成其定义。
请尝试以下示例;它显示了如何与对象一起添加功能。
<html> <head> <title>User-defined objects</title> <script type = "text/javascript"> //定义一个将用作方法的函数 function addPrice(amount) { this.price = amount; } function book(title, author) { this.title = title; this.author = author; this.addPrice = addPrice; //将该方法分配为属性。 } </script> </head> <body> <script type = "text/javascript"> var myBook = new book("Perl", "Mohtashim"); myBook.addPrice(100); document.write("Book title is : " + myBook.title + "<br>"); document.write("Book author is : " + myBook.author + "<br>"); document.write("Book price is : " + myBook.price + "<br>"); </script> </body> </html>
Book title is : Perl Book author is : Mohtashim Book price is : 100
“ with”关键字
‘with’关键字用作引用对象的属性或方法的一种简写形式。
指定为参数的对象with成为后续块持续时间内的默认对象。可以使用该对象的属性和方法而无需命名该对象。
语法
with object的语法如下:
with (object) { properties used without the object name and dot }
请尝试以下示例。
<html> <head> <title>User-defined objects</title> <script type = "text/javascript"> //定义一个将用作方法的函数 function addPrice(amount) { with(this) { price = amount; } } function book(title, author) { this.title = title; this.author = author; this.price = 0; this.addPrice = addPrice; //将该方法分配为属性。 } </script> </head> <body> <script type = "text/javascript"> var myBook = new book("Perl", "Mohtashim"); myBook.addPrice(100); document.write("Book title is : " + myBook.title + "<br>"); document.write("Book author is : " + myBook.author + "<br>"); document.write("Book price is : " + myBook.price + "<br>"); </script> </body> </html>
Book title is : Perl Book author is : Mohtashim Book price is : 100
JavaScript本机对象
JavaScript具有多个内置对象或本机对象。这些对象可在程序中的任何位置访问,并且在任何操作系统中运行的任何浏览器中都将以相同的方式工作。
以下是所有重要的JavaScript本机对象的列表:
JavaScript数字对象
JavaScript布尔对象
JavaScript字符串对象
JavaScript数组对象
JavaScript日期对象
JavaScript数学对象
JavaScript RegExp对象