JavaScript学习总结
浏览量:951
由于以前JavaScript用的比较的少,所以对JavaScript的认识非常的肤浅,这周看了蛮多关于javascript的书和文档,对JavaScript终于有了一些初步的认识,总结一下,希望懂JavaScript的高手多多指点。
1、JavaScript可以作为单独的文件存在但也必须通过在HTML 文档中调用才能起作用,它和大多数脚本语言一样在浏览器中是解释执行。其实JavaScript只要一个txt文本就可以编程了,没不像Java那样需要特定的环境
2、“对象本无根,类型亦无形。本来无一物,何处惹尘埃?”这是我看的一部武功秘籍 里面的一句话,但是它确实讲到了JavaScript的精髓。。JavaScript 就是把数据和代码都简化到最原始的程度看看下面一段有趣的代码:
var anObject = {}; //一个对象
anObject.aProperty = "Property of object"; //对象的一个属性
anObject.aMethod = function(){alert("Method of object")}; //对象的一个方法
//主要看下面:
alert(anObject["aProperty"]); //可以将对象当数组以属性名作为下标来访问属性
anObject["aMethod"](); //可以将对象当数组以方法名作为下标来调用方法
for( var s in anObject) //遍历对象的所有属性和方法进行迭代化处理
alert(s + " is a " + typeof(anObject[s]));
同样对于 function 类型的对象也是一样:
var aFunction = function(){}; //一个函数
aFunction.aProperty = "Property of function"; //函数的一个属性
aFunction.aMethod = function(){alert("Method of function")}; //函数的一个方法
//主要看下面:
alert(aFunction["aProperty"]); //可以将函数当数组以属性名作为下标来访问属性
aFunction["aMethod"](); //可以将函数当数组以方法名作为下标来调用方法
for( var s in aFunction) //遍历函数的所有属性和方法进行迭代化处理
alert(s + " is a " + typeof(aFunction[s]));,看看下面一段有趣的代码
是的,对象和函数可以象数组一样,用属性名或方法名作为下标来访问并处理。那么,它到底应该算是数组呢,还是算对象?哈哈“对象本无根,类型亦无形”无论对象还是函数,还是类,大家最原始的都一样
3、再就是this了,JavaScript的this和Java的this可不是同一个东西哦,在 JavaScript 函数中,你只能把this 看成当前要服务的“这个”对象。this 是一个特殊的内置参数,根据this 参数,您可以访问到“这个”对象的属性和方法,但却不能给this 参数赋值。在一般对象语言中,方法体代码中的 this 可以省略的,成员默认都首先是“自己” 的。但JavaScript 却不同,由于不存在“自我”,当访问“这个”对象时,this 不可省略!
for example :
function WhoAmI() //定义一个函数WhoAmI
{
alert("I'm " + this.name + " of " + typeof(this));
};
WhoAmI(); //此时是this 当前这段代码的全局对象,在浏览器中就是window 对象,其name 属性为空字符串。
输出:I'm of object
var BillGates = {name: "Bill Gates"};
BillGates.WhoAmI = WhoAmI; //将函数WhoAmI 作为BillGates 的方法。
BillGates.WhoAmI(); //此时的this 是BillGates。输出:I'm Bill Gates of object
var SteveJobs = {name: "Steve Jobs"};
SteveJobs.WhoAmI = WhoAmI; //将函数WhoAmI 作为SteveJobs 的方法。
SteveJobs.WhoAmI(); //此时的this 是SteveJobs。输出:I'm Steve Jobs of object
WhoAmI.call(BillGates); //直接将BillGates 作为this,调用WhoAmI。输出:I'm Bill Gates of object
WhoAmI.call(SteveJobs); //直接将SteveJobs 作为this,调用WhoAmI。输出:I'm Steve Jobs of object
4、JavaScript 执行引擎并非一行一行地分析和执行程序,而是一段一段(一(<script></script>为一段))地分析执行
for example:
function myfunc ()
{
alert("hello");
};
myfunc(); //这里调用myfunc,输出yeah 而不是hello
function myfunc ()
{
alert("yeah");
};
myfunc(); //这里调用myfunc,当然输出yeah
,在第一次调用myfunc 之前,第一个函数语句定义的代码逻辑,已被第二个函数定义语句覆盖了。所以,两次都调用都是执行最后一个函数逻辑 好了就到这里了,以后学到更多再编辑吧


感谢支持与鼓励~