资源描述:
《[精通JavaScript]_笔记》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、阅读至17页一、概述1二、面向对象的javascript11.语言特性1a.类型检查1b.作用域2c.闭包2d.上下文对象32.面向对象基础4a.constructor属性4b.公共方法5c.私有方法5d.特权方法5一、概述二、面向对象的javascript1.语言特性·一个健全的web应用程序应该是分离式的,即在浏览器不支持javascript的情况下仍能正常的工作。·引用是指向对象实际位置的一个指针。多个引用可以指向同一个对象,·javascript中对象的属性可以任意扩展。·javascript中用pu
2、sh方法来给数组对象添加新的元素,元素可以无限添加。因为数组其实是把这些值当成属性保存。·引用只能指向具体的对象,不能再指向另一个引用。·javascript的每一个函数都有一个仅在这个函数范围内作用的变量(arguments),他是一个包含所有传给函数的参数的伪数组,arguments不能修改,可以访问其中的元素,也具有length属性。·javascript中有重载的间接实现。a.类型检查·javascript中两种类型检查的方法:typeof操作符(当变量不是object或者array类型时,这是最完美
3、的解决方法)typeofi=="string";typeofnum=="number";使用构造函数来判断对象的类型i.constructor==String;i.constructor==Array;一个函数可以严格的检测传入函数的所有参数:functionstrict(types,args){//保证类型的数量和参数的数量匹配if(types.length!=args.length){//否则抛出一个异常throw"需要参数数量"+types.length+",接收到参数数量:"+args.length;
4、}//遍历所有数组,检查他们的类型for(vari=0;i5、/一个全局的变量alert(window.test);如果变量没有显式定义,它就是全局定义的。functionfun(){foo="hello";//foo未声明}fun();alert(window.foo=="hello");b.闭包闭包(closure)意味着内层的函数可以引用存在于包围他的函数内的变量,及时外层的函数的执行已经终止。functiondelayedAlert(msg,time){setTimeout(function(){alert(msg);},time);}delayedAlert(
6、'hello',2000);在一些函数式程序设计语言中,有种成为Curry化的技术。本质上curry化是通过把多个参数填充到函数体里,实现将函数转换为一个新的经过简化的(使之接受的参数更少)函数的技术。//用闭包实现的函数curry化//数字求和函数的生成器。functionaddGenerator(num){//返回一个函数,求两个数的和returnfunction(toAdd){returnnum+toAdd;}}//声明一个函数,这个函数能求得5加上参数的和。varaddFive=addGenerato
7、r(5);alert(addFive(2));使用匿名函数来隐藏全局作用域(function(){//变量原本应该是全局的varmsg="hello";//将一个新函数绑定到全局对象window.onunload=function(){//这个函数使用了“隐藏的”msg变量alert(msg);}})();a.上下文对象在javascript中,你的代码总是有一个上下文对象(代码处在该对象内)上下文对象是通过this变量体现的,这个变量永远指向当前代码所出的对象中。全局对象是window对象的属性。Call方
8、法Call方法将上下文对象(this)设置为第一个参数,并将其他参数作为原函数的参数。