Javascript学习笔记

一、做为数据类型的对象和函数

在Javascript中,对象和函数为复合数据类型,既是数据类型,就可以把它们赋值给变量,于是就出现了几个有意思的东西:

1.将一个对象赋值给另一个对象的属性。于是在客户端Javascript中就有了类似的调用:document.formname.inputname.value

2.将函数赋值给一个对象的属性,这就构成了对象的方法。

3.我们知道可以使用Function()构造函数和new运算符来定义函数,这说明函数实际上也是一种Javascript对象。由于函数是对象,那么它就也具有属性和方法,Function对象本身具有的属性有length和prototype,方法有apply()和call(),除此之外,我们还可以给Function对象创建自己的属性和方法。

二、变量的声明和作用域

1.正常情况下同名的局部变量会覆盖掉全局变量

<script language="javascript">
var str = "stra";
function fun(){
    var str = "strb";
    document.write(str);//返回"strb"
}
fun();
document.write(str);//返回"stra"
</script>

2.在函数体中使用未声明的变量,那它就是全局变量

<script language="javascript">
var str = "stra";
function fun(){
    str = "strb";
    document.write(str);//返回"stra",这里str是全局变量
}
fun();
document.write(str);//返回"stra"
</script>


<script language="javascript">
function fun(){
    str = "stra";
}
fun();
document.write(str);//返回"stra";VBscript无值
</script>

3.Javascript中变量的作用域没有块级概念,在函数体任何地方声明的变量在整个函数体中都是有效的

<script language="javascript">
var str = "stra";
function fun(){
    document.write(str);//返回"undefined",局部变量str在整个函数体中都有效;,VBscript无值
    if(true){
        var str = "strb";
    }
    document.write(str);//返回"strb"
}
fun();
document.write(str);//返回"stra"
</script>

基于上边几点,要养成使用变量都先声明并且将声明变量部分放在代码最上方的习惯!

三、变量的基本类型和引用类型

<script language="javascript">
var a = 1;
var b = a;
a = 2;
document.write(b);//基本类型,返回"1"
var c = [1,2,3];
var d = c;
c[0] = 4;
document.write(d[0]);//引用类型,返回"4";VBscript返回的是"1"
</script>


四、有趣的字符串

字符串不是数组,但却拥有和数组类似的属性和方法。如str.length为字符串长度;在某些Javascript版本中还可以使用数组的表示法将单个字符从字符串中读出,如str[1]为字符串第二个字符,但注意这只能读不能写入。

字符串不是对象,但它却可以使用对象的表示法来操作字符串。如str.length并不是在调用str对象的length属性,你用typeof可以知道str为字符串数据类型。《Javascript权威指南》第四版P56中解释:"当我们在对象环境中使用字符串时(即试图访问这个字符串的属性或方法时),Javascript会为这个字符串值内部地创建一个String包装对象。String对象就代替了原始的字符串值。由于对象具有了属性和方法,因此就能在对象环境中使用简单的值",要注意的是这个String对象只是瞬时存在的,使用之后没用了,系统会自动将它丢弃。

不能明确的说字符串是基本类型还是引用类型。由于字符串的大小是可变的,因而它不能像数值和布尔值等基本类型那样直接存储在固定大小的变量中,我们希望能像引用类型那样只复制对字符串的引用而不是字符串的内容,但是字符串在很多方面又和基本类型表现相似。"其实,无论你将字符串看作是行为与基本类型相似的不可变的引用类型,还是将它看作使用引用类型的内部功能实现的基本类型,结果都是一样的"《Javascript权威指南》第四版P64-65

上一篇: 郁闷,USB鼠标不能用
下一篇: shutdown命令
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
最新日志:
评论: 0 | 引用: 0 | 查看次数: 4025
发表评论
登录后再发表评论!