对象
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>