JavaScript高级编程之对象扩展与继承.doc

JavaScript高级编程之对象扩展与继承.doc

ID:51690199

大小:64.50 KB

页数:13页

时间:2020-03-15

JavaScript高级编程之对象扩展与继承.doc_第1页
JavaScript高级编程之对象扩展与继承.doc_第2页
JavaScript高级编程之对象扩展与继承.doc_第3页
JavaScript高级编程之对象扩展与继承.doc_第4页
JavaScript高级编程之对象扩展与继承.doc_第5页
资源描述:

《JavaScript高级编程之对象扩展与继承.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第1节JavaScriptthis关键字精解1JavaScriptcall()函数:call()方法/apply()的意义在于扩充函数的作用域!JavaScriptfunc.call()定义:Ø若IsCallable(func)为false,则抛出TypeError异常。Ø将argList置空。Ø若方法调用不止一个参数,则按从左向右的顺序将参数添加到argList中。Ø返回func中的方法调用结果,提供thisArg作为this的值,并将argList作为参数列表。① Makeanargumentlist(

2、argList)outofparameters1throughtheend② ThefirstparameteristhisValue③ InvokethefunctionwiththissettothisValueandtheargListasitsargumentlist例子:functionhello(thing){console.log(this+"sayshello"+thing);}hello.call("Yehuda","world")//=>Yehudasayshelloworld以上调用简

3、化:functionhello(thing){console.log("Hello"+thing);}//this:hello("world")//desugarsto:hello.call(window,"world");④ 但ECMAScript5规范对此作了进一步限定,只在严格模式下才会将thisValue绑定到window,而一般情况下,绑定到undefined。原文:afunctioninvocationlikefn(...args)isthesameasfn.call(window[ES5-st

4、rict:undefined],...args).//this:hello("world")//desugarsto:hello.call(undefined,"world");⑤ 内联函数(inlinefunction):(function(){})()isthesameas(function(){}).call(window[ES5-strict:undefined)2成员函数2.1内置成员函数varperson={name:"BrendanEich",hello:function(thing){con

5、sole.log(this+"sayshello"+thing);}}//this:person.hello("world")//desugarstothis:person.hello.call(person,"world");2.2外成员函数functionhello(thing){console.log(this+"sayshello"+thing);}person={name:"BrendanEich"}person.hello=hello;person.hello("world")//stillde

6、sugarstoperson.hello.call(person,"world")hello("world")//"[objectDOMWindow]world"3使用Function.prototype绑定将this绑定到指定对象的方法:varperson={name:"BrendanEich",hello:function(thing){console.log(this.name+"sayshello"+thing);}}varboundHello=function(thing){returnperso

7、n.hello.call(person,thing);}boundHello("world");上述方法一般化:varbind=function(func,thisValue){returnfunction(){returnfunc.apply(thisValue,arguments);}}varboundHello=bind(person.hello,person);boundHello("world")//"BrendanEichsayshelloworld"ECMAScript提供了bind()方法实

8、现上述功能。varboundHello=person.hello.bind(person);boundHello("world")//"BrendanEichsayshelloworld"常用于原生函数作为被调函数:varperson={name:"AlexRussell",hello:function(){console.log(this.name+"sayshelloworld");}}$("#some-di

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。