亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JavaScript 函數四種調用模式

2019-11-06 06:04:38
字體:
來源:轉載
供稿:網友

函數有四種形態

-> 函數形態-> 方法形態-> 構造器形態-> 上下文形態(call, apply)

函數的四種調用模式

所有的 this 都是由當前函數決定,最終都是由函數的四種調用模式決定的。① 函數調用模式,只會執行一段代碼,同時函數中的 this 是全局對象 window;返回值由return語句決定,如果沒有return語句就表示沒有返回值
function f1(){    console.log(this);}f1();//windowfunction f2(){    return function(){        console.log(this);    }}var f2n=f2();f2n();//this——>window,這也是一次函數調用模式function f3(){    f3n();//函數調用模式——————>window    function f3n(){        console.log(this);    }}f3();// window② 方法調用模式,只會執行一段代碼,同時方法中的 this 是方法的所有者,即當前的實例對象;返回值由 return 語句決定
//代碼1:var obj={    age:10,    say:function(){        console.log(this.age);    }};obj.say();//方法調用模式//代碼2:function f1(){    console.log(this);}var obj2={    s1:f1//將f1函數賦值給obj2.s1屬性};obj2.s1();//方法調用模式——>this:obj2//代碼3:var obj3={    age:10,    s1:function(){        console.log(this.age);    }};var obj4={    age:20,    s2:obj3.s1//將obj3.s1函數賦值給s2屬性};obj4.s2();//方法調用模式:this——>obj4③ 構造器調用模式,會用來創建一個對象,還是執行一段代碼,this 表示當前對象返回值:   a. 沒有手動添加返回值,默認返回 this   b. 返回了一個基本數據類型(number / boolean / string / null / undefined),最終返回 this   c. 返回了一個復雜數據類型(對象),最終返回該對象
//代碼1:function Person(){    this.age=20;    this.name="張三";    console.log(this);}//構造函數調用模式:var p1=new Person();//代碼2;function P2(){    this.age=18;    return "abc";}var p2=new P2();//p2.age=18//代碼3:function P3(){    this.age=10;    return {};}var p3=new P3();//p3.age:undefinedconsole.log("p3.age");console.log(p3.age);//代碼4:function P4(){    this.age=10;    return [1,3,5];}var p4=new P4();//p4.age:undefinedconsole.log("p4.age");console.log(p4.age);④ 上下文調用模式,可以用參數來控制 this 的含義語法:        函數.call(對象,參數列表)        函數.apply(對象,參數數組)        call 和 apply 除了參數不同,功能完全相同this :    a. 傳遞一個 null / undefined ,this 指向 window    b. 傳遞一個 數字 / 字符串 / 布爾值,this 指向 對應的基本包裝類型的對象(Number / String / Boolean)    c. 傳遞一個 對象:this 指向該對象返回值:由 return 語句決定例如調用 函數 func 需要兩個參數func( 1, 2 )那么使用上下文調用的語法是func.call(obj, 1, 2);func.apply(obj, [1, 2]);apply 方法就是為了處理偽數組借用函數調用p.sayHello => p.sayHello.call(p)    p.sayHello.apply(p)
function f1(){    console.log(this);}//上下文模式f1.call(null);//windowf1.call(undefined);//windowf1.call(1);//Number的實例f1.call("abc");//String的實例f1.call(true);//Boolean的實例var s1="abc";console.log(s1.length);//3console.log(s1[0]);//"a"//代碼內部創建了字符串所對應的String構造函數的實例//{0:"a",1:"b",2:"c",length:3}//代碼執行完畢之后,就會把這個實例給銷毀練習題1:
function f1(){    this.length=5;    return function(a,b,c){        this.length=10;        return [1,3,5];    }}//構造函數調用模式:var r1=new f1();//r1是函數console.log(r1.length);//任何函數都有一個length屬性表示形參的個數:3//函數調用模式var r2=r1();//r2:[1,3,5]console.log(r2.length);//3//構造函數調用模式var r3=new r1();//r3:[1,3,5]console.log(r3.length);//3練習題2:
var length = 10;function fn() {    console.log(this.length);}var obj = {    length: 5,    method: function (f) {        f();//f變量的值是fn函數,但是這里是函數調用模式--->this:window————>window.length:10        arguments[0]();//方法調用模式,this:arguments——>arguments.length:2    }}obj.method(fn, 1);var o1={    0:function(){    },    say:function(){    }};o1[0]();//o1.0();//錯誤o1.say();o1["say"]();
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91色在线观看| 欧美激情一区二区三区久久久| 亚洲天天在线日亚洲洲精| 精品呦交小u女在线| 亚洲自拍高清视频网站| 国内精品模特av私拍在线观看| 欧美色视频日本版| 理论片在线不卡免费观看| 色综合久久中文字幕综合网小说| 中文字幕在线观看亚洲| 久久精品亚洲国产| 国产精品成人aaaaa网站| 国产精品免费久久久| 欧美性资源免费| 成人亲热视频网站| 日韩精品视频三区| 中文字幕在线观看日韩| 久久久之久亚州精品露出| 欧美大肥婆大肥bbbbb| 亚洲国产精品推荐| 亚洲综合中文字幕68页| 国产精品扒开腿做爽爽爽视频| 国产精品久久久久久久久久久久久| 欧美日韩精品国产| 欧美精品999| 亚洲男人天堂2023| 欧美日韩中国免费专区在线看| 1769国产精品| 久久精品国产亚洲一区二区| 亚洲国产精品久久| 亚洲专区中文字幕| 国产精品久久77777| 久久久日本电影| 精品无码久久久久久国产| 日韩av一区二区在线| 精品精品国产国产自在线| 欧美精品激情视频| 国产精品久久久久久久一区探花| 欧美激情在线狂野欧美精品| 国产精品影院在线观看| 久久99久久99精品中文字幕| 国产成人涩涩涩视频在线观看| 91精品成人久久| 亚洲欧美精品一区二区| 欧美黑人xxxⅹ高潮交| 日韩久久免费电影| 久久亚洲综合国产精品99麻豆精品福利| 伦理中文字幕亚洲| 日韩精品中文字幕有码专区| 日韩电影在线观看永久视频免费网站| 国产精品专区h在线观看| 日韩中文字幕国产| 国产久一一精品| 亚洲人午夜精品免费| 97人洗澡人人免费公开视频碰碰碰| 久久成人精品一区二区三区| 国产ts人妖一区二区三区| 欧美亚洲第一页| 欧美wwwwww| 中文字幕精品一区久久久久| 国产主播喷水一区二区| 在线观看国产精品日韩av| 国产精品入口日韩视频大尺度| 最近的2019中文字幕免费一页| 91av在线播放视频| 91精品国产综合久久久久久蜜臀| 2019国产精品自在线拍国产不卡| 欧美一乱一性一交一视频| 欧美成人精品一区二区三区| 欧美激情精品久久久久久蜜臀| 亚洲精品国产精品乱码不99按摩| 日本欧美中文字幕| 亚洲精品久久久久| 成人激情视频免费在线| 国产精品99久久久久久www| 91精品久久久久久综合乱菊| 色伦专区97中文字幕| 亚洲欧美日韩国产中文专区| 欧洲亚洲在线视频| 91中文精品字幕在线视频| 亚洲精品自在久久| 国产激情综合五月久久| 热久久免费国产视频| 精品久久久久久国产91| 亚洲精品久久视频| 久久夜精品va视频免费观看| 国产小视频国产精品| 国产精品偷伦视频免费观看国产| 91综合免费在线| 亚洲乱码av中文一区二区| 久久久女女女女999久久| 欧美有码在线观看| 高跟丝袜欧美一区| 日韩精品高清视频| 欧美日韩国产综合视频在线观看中文| 国产精品丝袜久久久久久不卡| 亚洲精品国产suv| 亚洲成人性视频| 久久影院免费观看| 国产999在线| 欧美日韩美女在线观看| 久久久久久91香蕉国产| 国产精品偷伦视频免费观看国产| 91免费国产视频| 亚洲天堂网站在线观看视频| 欧美日韩成人在线视频| 欧美黑人性生活视频| 日本精品免费一区二区三区| 欧美裸体xxxxx| 在线视频免费一区二区| 国产亚洲欧美aaaa| 欧美乱人伦中文字幕在线| 亚洲www在线| 国产视频亚洲视频| 国产精品福利网| 亚洲人成自拍网站| 精品亚洲国产成av人片传媒| 少妇高潮 亚洲精品| 国产精品自产拍在线观看中文| 日韩在线观看免费全集电视剧网站| 亚洲男人天堂视频| 欧美xxxx综合视频| 欧美一级电影久久| 久久99久久99精品免观看粉嫩| 久久精品久久久久电影| 亚洲精品色婷婷福利天堂| 亚洲白虎美女被爆操| 在线色欧美三级视频| 日韩av电影中文字幕| 中文字幕一精品亚洲无线一区| 日韩网站免费观看| 欧美性猛交视频| 日韩精品视频免费专区在线播放| 91香蕉嫩草影院入口| 欧美激情欧美狂野欧美精品| 国产精品一区av| 神马国产精品影院av| 国产精自产拍久久久久久| 欧美日韩成人网| 国产精品稀缺呦系列在线| 理论片在线不卡免费观看| 亚洲国产欧美一区二区丝袜黑人| 亚洲天堂成人在线| 青草青草久热精品视频在线观看| 精品久久久久久亚洲国产300| 亚洲精品久久在线| 2019中文在线观看| 国产精品自拍网| 久久精品国产亚洲7777| 91免费看片在线| 国产精品第3页| 亚洲精品丝袜日韩| 国产欧美最新羞羞视频在线观看| 国模吧一区二区三区| 国产视频精品在线| 狠狠久久五月精品中文字幕| 久久久精品亚洲| 在线播放国产一区中文字幕剧情欧美| 98视频在线噜噜噜国产| 成人激情综合网| 成人网欧美在线视频| 欧美国产视频日韩| 亚洲全黄一级网站| 欧美大成色www永久网站婷|