对象

JS中的所有事物都是对象:字符串,数值,数组,函数...正所谓万物皆对象.

JS中,可以将对象分为”内部对象”,”宿主对象”和”自定义对象”三种.

 

1,内部对象

js中的内部对象包括Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、String以及各种错误类对象,包括Error、EvalError、RangeError、ReferenceError、SyntaxError和TypeError。

其中Global和Math这两个对象又被称为“内置对象”,这两个对象在脚本程序初始化时被创建,不必实例化这两个对象。

2.宿主对象

宿主对象就是执行JS脚本的环境提供的对象。对于嵌入到网页中的JS来说,其宿主对象就是浏览器提供的对象,所以又称为浏览器对象,如IE、Firefox等浏览器提供的对象。不同的浏览器提供的宿主对象可能不同,即使提供的对象相同,其实现方式也大相径庭!这会带来浏览器兼容问题,增加开发难度。

浏览器对象有很多,如Window和Document等等。

 

3.自定义对象

顾名思义,就是开发人员自己定义的对象。JS允许使用自定义对象,使JS应用及功能得到扩充。

 

 

 

对象只是带有属性和方法的特殊数据类型.

 

 

访问对象的属性

属性是与对象相关的值.

访问对象属性的语法是:

objectName.propertyName

案例:

var message=”hello,world”;

var x=message.length

分析:这个例子使用了String对象的length属性来获得字符串的长度,,在以上代码之后后,x的值是11

 

 

访问对象的方法

方法是能够在对象执行的动作.

可以通过以下语句来调用方法:

objectName.methodName();

案例:

var message=”hello,world”;

var x=message.toUpperCase();

分析:在上述代码执行完毕之后,x的值将是:HELLO,WORLD.

 

 

 

创建JS对象

通过JS,能够定义并创建自己的对象.

创建新对象有两种不同的方法:

1.定义并创建对象哪的实例

2.使用函数来定义对象,然后创建新的对象实例

 

 

创建直接的实例:

person=new Object();

person.fristName=”乔布斯”;

pweson.lastName=”史蒂芬”;

person.age=”58”;

person.eyeColor=”blue”;

分析:这个案例创建了对象的新实例,并向其添加了四个属性.

 

替代语法(使用对象literals):

实例:

person={firstName:”乔布斯”,lastName:”史蒂芬”,age:”58”,eyeColor:”blue”};

 

 

 

使用对象构造器

案例:使用函数来构造对象

function person(firstname,lastname,age,eyecolor){this.firstname=firstname;this.lastname=lastname;this.age=age;this.eyecolor=eyecolor;}

创建JS对象实例

一旦你有了对象的构造器,就可以创建新的对象实例,就像这样:前提是上面使用函数来构造对象

var myFather=new person("Bill","Gates",56,"blue");var myMother=new person("Steve","Jobs",48,"green");

把属性添加到JS对象

你可以通过为对象复制,想已有对象添加新属性:

假设personObj已存在,您可以为其添加这些新属性:firstName,LastName,age和eyeColor:

person.firstname="Bill";person.lastname="Gates";person.age=56;person.eyecolor="blue"; x=person.firstname;

在以上代码执行后,x的值为Bill

 

把方法添加到JS对象

方法只不过是附加在对象上的函数

在构造器函数内部定义对象的方法:

function person(firstname,lastname,eye,eyecolor)

{

this.firstname=firstname;

this.lastname=lastname;

this.age=age;

this.eyecolor=eyecolor;

 

this.changeName=cchangeName;

function changeName(name)

{

this.lastname=name;

}

}

changeName()函数name的值赋值给person的lastname属性.

你可以试试这样:

myMother.changeName(“Biller”);

 

 

 

JS类

JS是面向对象的语言,但JS不适用类.

在JS中,不会创建类,也不会通过类来创建对象(就像在其他面向对象的语言中那样).

JS基于prototype,而不是语句类的.

 

 

JS中的for/in循环

JS中的for/in语句循环遍历对象的属性.

这里有一点需要说明:for/in循环中的代码将针对每个属性执行一次.

案例:循环遍历对象的属性

<!DOCTYPE html>

<html>

<body>

<p>点击下面的按钮,循环遍历对象 "person" 的属性。</p>

<button οnclick="myFunction()">点击这里</button>

<p id="demo"></p>

 

<script>

function myFunction()

{

var x;

var txt="";

var person={fname:"Bill",lname:"Gates",age:56}; 

 

for (x in person)

{

txt=txt + person[x];

}

 

document.getElementById("demo").innerHTML=txt;

}

</script>

</body>

</html>