javascript里的所有事物都是对象。那么这就从类上讲,这就是已经创建内存的类的实体化。类里有自己的变量和方法,那么在JavaScript里就说对象里有属性和方法。这是一脉相承的。但是这里,不论是字符串,数值,还是函数以及数组。都是JavaScript所说的对象。这根C++有很大不同。
JavaScript 提供多个内建对象,比如 String、Date、Array 等等
一个以及被定义的自定义变量,就是一个对象,它有很多已经生成的方法,比如他的长度:
var message="Hello World!";
var x=message.length;
访问对象属性的语法是:
objectName.propertyName
那么访问对象的方法的语法就是:
objectName.methodName()比如,把字符串里所有小写字母变大写的方法:
var message="Hello world!";
var x=message.toUpperCase()
;
上面是我们所知道的变量现在变成了对象。
下面创建自己的一个变量即是对象。并设置自己对象的方法和属性。
<!DOCTYPE html>
<html>
<body>
<script>
person=new Object();
person.firstname="Bill";
person.lastname="Gates";
person.age=56;
person.eyecolor="blue";
document.write(person.firstname + " is " + person.age + " years old.");
</script>
</body>
</html>
person就是新的对象。有自己的属性firstname,lastname,age,eyecolor。没有方法
用的时候就如同C++的实例化的类了,不过是通过DOM向页面显示。
person={firstname:"Bill",lastname:"gates",age:56,eyecolor:"blue"}
不过JavaScript提供了一个可以替代的形式来创建对象。用的时候一样的。如上面的代码。
那么这个可以有一个疑问是这可不是面向对象的,这个没法重用代码呀。那么这里就有了一个对象构造器。差不多非常像C++啦
<!DOCTYPE html>
<html>
<body>
<script>
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
}
myFather=new person("Bill","Gates",56,"blue");
document.write(myFather.firstname + " is " + myFather.age + " years old.");
</script>
</body>
</html>
另外:对比类的话,不需要继承,可以直接在创建的对象里直接添加新的属性的。
那么添加方法就很好理解了。需要注意的是创建对象和创建方法都是用关键字function。另外相比类,方便的是不需要考虑变量类型。
<!DOCTYPE html>
<html>
<body>
<script>
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
this.changeName=changeName;
function changeName(name)
{
this.lastname=name;
}
}
myMother=new person("Steve","Jobs",56,"green");
document.write(myMother.lastname);
myMother.changeName("Ballmer");
document.write("<br>"+myMother.lastname);
</script>
</body>
</html>
但JavaScript不是基于类的。也不创建类,不是通过类来创建对象。只是差不多~~~差不多而已,自己通过C来想JavaScript便于理解。