7. 内置对象
方法:
eval() ://接受一个参数,即要执行的JavaScept字符串
如:eval(“alert(‘hi’)”); 相当于 alert(“hi”)
var msg = “hello world”;
eval(alert(msg));
Math对象
Math.ceil(24.5) // 表示向上舍入函数,总是把数字向上舍入到最接近的值 outputs 25
Math.floor(24.5)//表示向下舍入函数,总是把数字向下舍入到最接近的值 outpus 24
Math.round(24.5)//表示标准的舍入函数, outpus 25
this :指向调用该方法的对象
var o = new Object()
o.color = “red”;
o.myfun = function()
{
alert(this.color);
}
o.myfun(); //outputs red
var ocar = new Object;
ocar.color = 'red';
ocar.showColor = showColor;
ocar.showColor(); //outputs ‘red’
function showColor()
{
alert(this.color);
}
showColor.name = "abce";
alert(ocar.showColor.name); //oupputs ‘abce ‘
8. 定义类或对象
9.1工厂方法
function showColor()
{
alert(this.Color);
}
function createCar(iColor, iDoors, iMpg)
{
var car = new Object();
car.Color = iColor;
car.iDoors = iDoors;
car.iMpg = iMpg;
car.showColor = showColor;
return car
}
var redCar = createCar('red',4,'redpicture');
var greenCar = createCar('green',4,'greenPicture');
redCar.showColor();
greenCar.showColor();
//些方法的缺点:该方法看起来不像对象的方法
2.2 构造函数方式
function Car(sColor, iDoors, iMpg)
{
this.color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
this.showColor = function(){alert(this.color)}; //将此函数也可以定义到外面
}
var oCar1 = new Car("red",3,4);
var oCar2 = new Car('green',3,5);
oCar1.showColor();
2.3 原型方式
该方式利用了对象的prototype属性,可把它看成创建对象所依赖的原型.
function Car ()
{
}
Car.prototype.color = "red";
Car.prototype.doors = 4;
Car.prototype.mpg = 23;
Car.prototype.showColor = showColor;
var oCar3 = new Car();
var oCar4 = new Car();
oCar3.showColor();
function showColor()
{
alert(this.color);
}
//些方式的缺点:对象创建后才能改变属性的默认值,当对象的属性指向是的对象不是函数时,则会出现多个实例共享些对象的此属性的问题 如:
function car() {}
Car.prototype.color = “red”;
Car.prototype.doors = 4;
Car.prototype.drivers = new Array(“mike”,”sue”);
Car.showColor = showColor;
var oCar5 = new Car();
var oCar6 = new Car();
oCar5.drivers.push(“kite”);
alert(oCar5.drivers);//outputs mike,sue,kite
alert(oCar6.drivers);//outputs mike,sue,kite
2.4 混合的构造函数/原型方式—常用之
//利用构造函数定义对象的所有非函数属性,用原型方式定义对象的函数属性(方式)
function Car(sColors, iDoors, iMpg)
{
this.color = sColors;
this.doors = iDoors;
this.iMpg = iMpg;
this.drivers = new Array("mike","sue");
}
Car.prototype.showColor = showColor;
function showColor()
{
alert(this.color);
}
var oCar1 = new Car("red",4,24);
var oCar3 = new Car("green",4,45);
oCar1.drivers.push("Matt");
alert(oCar1.drivers);
alert(oCar3.drivers);
9.5动态原型方法
实现:在构造函数内定义非函数属性,而函数属性则利用原型属性定义.
function Car(sColor, iDoors, iMpg)
{
this.color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
this.drivers = new Array("mike","sue");
if(typeof Car._initalized == "undefined")
{
Car.prototype.showColor = function(){alert(this.color);};
Car._initalized = true;
}
}
var car10 = new Car("green-red",4,5);
car10.showColor();