??xml version="1.0" encoding="utf-8" standalone="yes"?>
Ҏ(gu)主要有三U?
转换函数、强制类型{换、利用js变量q型{换?
1. 转换函数
js提供了parseInt()和parseFloat()两个转换函数。前者把D{换成整数Q后者把D{换成点数。只有对Stringcd调用q些Ҏ(gu)Q这两个函数才能正确q行Q对其他cdq回的都是NaN(Not a Number)?
在判断字W串是否是数字值前QparseInt()和parseFloat()都会仔细分析该字W串。parseInt()Ҏ(gu)首先查看位置0处的字符Q?
判断它是否是个有效数字;如果不是Q该Ҏ(gu)返回NaNQ不再l执行其他操作。但如果该字W是有效数字Q该Ҏ(gu)查看位|?处的字符Q进行同L试?
q一q程持l到发现非有效数字的字符为止Q此时parseInt()把该字W之前的字符串{换成数字?
例如Q如果要把字W串 "1234blue
"转换成整敎ͼ那么parseInt()返?234Q因为当它检到字符bӞ׃停止过E。字W串中包含的数字字面量会被正{换ؓ数字Q因?
字符?"0xA "会被正确转换为数?0。不q,字符?"22.5 "被转换?2Q因为对于整数来_数Ҏ(gu)无效字符。一些示例如下:
parseInt("1234blue"); //returns 1234
parseInt()Ҏ(gu)q有基模式,可以把二q制、八q制、十六进制或其他Mq制的字W串转换成整数。基是由parseInt()Ҏ(gu)的第二个参数指定的,所以要解析十六q制的|需如下调用parseInt()Ҏ(gu)Q?br />
parseInt("AF", 16); //returns 175
parseFloat()Ҏ(gu)与parseInt()Ҏ(gu)的处理方式相|从位|?开始查看每个字W,直到扑ֈW一个非有效的字Wؓ止,然后把该字符之前
的字W串转换成数字。不q,对于q个Ҏ(gu)来说Q第一个出现的数Ҏ(gu)有效字符。如果有两个数点,W二个小数点被看作无效的,parseFloat()
Ҏ(gu)会把q个数点之前的字符串{换成数字。这意味着字符?"22.34.5 "被解析?2.34?br />
使用parseFloat()Ҏ(gu)的另一不同之处在于Q字W串必须以十q制形式表示点敎ͼ而不能用八进制Ş式或十六q制形式。该
下面是用parseFloat()Ҏ(gu)的示例:
2. 强制cd转换
q可使用强制cd转换Qtype castingQ处理{换值的cd。用强制类型{换可以访问特定的|即它是另一U类型的?br />
ECMAScript中可用的3U强制类型{换如下:
可以用下面的代码D|试Boolean型的强制cd转换?
Boolean(""); //false – empty string
Number()的强制类型{换与parseInt()和parseFloat()Ҏ(gu)的处理方式相|只是它{换的是整个|而不是部分倹{还记得
吗,parseInt()和parseFloat()Ҏ(gu)只{换第一个无效字W之前的字符Ԍ因此 "4.5.6 "被转换?"4.5
"。用Number()q行强制cd转换Q?"4.5.6
"返回NaNQ因为整个字W串g能{换成数字。如果字W串D被完整地转换QNumber()判断是调用parseInt()Ҏ(gu)q是调用
parseFloat()Ҏ(gu)。下表说明了对不同的D用Number()Ҏ(gu)会发生的情况Q?
用 ?nbsp; l ?br />
Number(false) 0
最后一U强制类型{换方法String()是最单的Q因为它可把MD{换成字符丌Ӏ要执行q种强制cd转换Q只需要调用作为参C递进来的值的
toString()Ҏ(gu)Q即?转换?nbsp; "1 "Q把true转换?"true "Q把false转换?"false
"Q依此类推。强制{换成字符串和调用toString()Ҏ(gu)的唯一不同之处在于Q对null或undefined值强制类型{换可以生成字W串而不?
发错误:
var s1 = String(null); //"null"
3. 利用js变量q型{?/strong>
举个例子,一看,׃明白了?br />
<script>
上例利用了js的弱cd的特点,只进行了术q算Q实C字符串到数字的类型{换,不过q个Ҏ(gu)q是不推荐的?
parseInt("0xA"); //returns 10
parseInt("22.5"); //returns 22
parseInt("blue"); //returns NaN
当然Q对二进制、八q制Q甚臛_q制Q默认模式)Q都可以q样调用parseInt()Ҏ(gu)Q?br />
parseInt("10", 2); //returns 2
parseInt("10", 8); //returns 8
parseInt("10", 10); //returns 10
如果十进制数包含前导0Q那么最好采用基?0Q这h不会意外地得到八q制的倹{例如:
parseInt("010"); //returns 8
parseInt("010", 8); //returns 8
parseInt("010", 10); //returns 10
在这D代码中Q两行代码都把字W串 "010 "解析成了一个数字。第一行代码把q个字符串看作八q制的|解析它的方式与第二行代码Q声明基Cؓ8Q相同。最后一行代码声明基Cؓ10Q所以iNum3最后等?0?
Ҏ(gu)会忽略前?Q所以八q制?908被解析?08。对于十六进制数0xAQ该Ҏ(gu)返回NaNQ因为在点CQx不是有效字符。此外,parseFloat()也没有基模式?
parseFloat("1234blue"); //returns 1234.0
parseFloat("0xA"); //returns NaN
parseFloat("22.5"); //returns 22.5
parseFloat("22.34.5"); //returns 22.34
parseFloat("0908"); //returns 908
parseFloat("blue"); //returns NaN
Boolean(value)——把l定的D{换成Boolean型;
Number(value)——把l定的D{换成数字Q可以是整数或QҎ(gu)Q;
String(value)——把l定的D{换成字符丌Ӏ?br />
用这三个函数之一转换|创Z个新|存放由原始值直接{换成的倹{这会造成意想不到的后果?br />
当要转换的值是臛_有一个字W的字符丌Ӏ非0数字或对象(下一节将讨论q一点)ӞBoolean()函数返回true。如果该值是I字W串、数??ff0000或nullQ它?yu)返回false?
Boolean("hi"); //true – non-empty string
Boolean(100); //true – non-zero number
Boolean(null); //false - null
Boolean(0); //false - zero
Boolean(new Object()); //true – object
Number(true) 1
Number(undefined) NaN
Number(null) 0
Number( "5.5 ") 5.5
Number( "56 ") 56
Number( "5.6.7 ") NaN
Number(new Object()) NaN
Number(100) 100
var oNull = null;
var s2 = oNull.toString(); //won’t work, causes an error
var str= '012.345 ';
var x = str-0;
x = x*1;
</script>
]]>
盒子标签和属性对?/p>
CSS语法 (不区分大写) JavaScript语法 (区分大小?
border border
border-bottom borderBottom
border-bottom-color borderBottomColor
border-bottom-style borderBottomStyle
border-bottom-width borderBottomWidth
border-color borderColor
border-left borderLeft
border-left-color borderLeftColor
border-left-style borderLeftStyle
border-left-width borderLeftWidth
border-right borderRight
border-right-color borderRightColor
border-right-style borderRightStyle
border-right-width borderRightWidth
border-style borderStyle
border-top borderTop
border-top-color borderTopColor
border-top-style borderTopStyle
border-top-width borderTopWidth
border-width borderWidth
clear clear
float floatStyle
margin margin
margin-bottom marginBottom
margin-left marginLeft
margin-right marginRight
margin-top marginTop
padding padding
padding-bottom paddingBottom
padding-left paddingLeft
padding-right paddingRight
padding-top paddingTop
颜色和背景标{֒属性对?
CSS语法 (不区分大写) JavaScript语法 (区分大小?
background background
background-attachment backgroundAttachment
background-color backgroundColor
background-image backgroundImage
background-position backgroundPosition
background-repeat backgroundRepeat
color color
样式标签和属性对?
CSS语法 (不区分大写) JavaScript语法 (区分大小?
display display
list-style-type listStyleType
list-style-image listStyleImage
list-style-position listStylePosition
list-style listStyle
white-space whiteSpace
文字样式标签和属性对?
CSS语法 (不区分大写) JavaScript语法 (区分大小?
font font
font-family fontFamily
font-size fontSize
font-style fontStyle
font-variant fontVariant
font-weight fontWeight
文本标签和属性对?
CSS语法 (不区分大写) JavaScript语法 (区分大小?
letter-spacing letterSpacing
line-break lineBreak
line-height lineHeight
text-align textAlign
text-decoration textDecoration
text-indent textIndent
text-justify textJustify
text-transform textTransform
vertical-align verticalAlign
Lecture.prototype.display=function(){
return this.teacher+"is teaching "+this.name;
}
function Schedule(lectures){
this.lectures=lectures;
}
Schedule.prototype.display=function(){
var str="";
for(var i=0;i<this.lectures.length;i++)
str+=this.lectures[i].display()+"! ";
return str;
}
var myLecture=new Lecture("Gym","Hunk Wang");
var myLecture2=new Lecture("Tom","Ducklyl");
var myArray=new Array(myLecture,myLecture2);
var mySchedule=new Schedule(myArray);
alert(mySchedule.display());
</script>
q行l果为:Hunk Wang is teaching Gym! Ducklyl is teaching Tom!
下面分析一下流E,以上建立两个c?font style="background-color: #c7edcc">Lecture?font style="background-color: #c7edcc">ScheduleQ?br />
首先初始?font style="background-color: #c7edcc">Lecturec,调用LecturecL造函敎ͼ接着?font style="background-color: #c7edcc">Lecturecȝ对象Q作为参C入Schedulec,Schedule对象初始化,从而实Cq结果?br />
不难发现Q这U方式和java是类似的。只qjavascript要真正实现面象对象,q需要很多过E实现?br />
期待后箋?br />
function Circle(radius)
{
this.r = radius;
}
Circle.PI = 3.14159;
Circle.prototype.area = function(){
return Circle.PI * parseInt(this.r) * parseInt(this.r);
}
//定义ChildCircle子类
function ChildCircle(radius){
this.root=Circle;
this.root(radius);//调用父类的构造函敎ͼ也可以通过call方式调用
// Circle.call(this,radius);
}
ChildCircle.prototype=new Circle();//声明l承Q?font style="background-color: #c7edcc">ChildCirclel承了Circle的所有方?/font>
//子类覆盖父类的方法area
ChildCircle.prototype.area = function(){
return 2 * parseInt(this.r) * parseInt(this.r);
}
var d = new ChildCircle(2);
alert(d.area());