<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        javascript中的self和this用法小結_javascript技巧

        來源:懂視網 責編:小采 時間:2020-11-27 21:19:17
        文檔

        javascript中的self和this用法小結_javascript技巧

        javascript中的self和this用法小結_javascript技巧:一、 起因 那天用到prototype.js于是打開看看,才看幾行就滿頭霧水,原因是對js的面向對象不是很熟悉,于是百度+google了一把,最后終于算小有收獲,寫此紀念一下^_^。 prototype.js代碼片段 代碼如下:var Class = { create: functi
        推薦度:
        導讀javascript中的self和this用法小結_javascript技巧:一、 起因 那天用到prototype.js于是打開看看,才看幾行就滿頭霧水,原因是對js的面向對象不是很熟悉,于是百度+google了一把,最后終于算小有收獲,寫此紀念一下^_^。 prototype.js代碼片段 代碼如下:var Class = { create: functi

        一、 起因
        那天用到prototype.js于是打開看看,才看幾行就滿頭霧水,原因是對js的面向對象不是很熟悉,于是百度+google了一把,最后終于算小有收獲,寫此紀念一下^_^。
        prototype.js代碼片段

        代碼如下:
        var Class = {
        create: function() {
        return function() {
        this.initialize.apply(this , arguments);
        }
        }
        }
        // Class使用方法如下
        var A = Class.create();
        A. prototype={
        initialize:function(v){
        this .value=v;
        }
        showValue:function(){
        alert(this.value);
        }
        }
        var a = new A(‘helloWord!');
        a. showValue();//彈出對話框helloWord!

        l initialize是什么?
        l apply方法是干什么的?
        l arguments變量呢?
        l 為什么new A后就會執行initialize方法?
        尋找答案:

        二、 Js的面向對象
        initialize是什么?
        只不過是個變量,代表一個方法,用途是類的構造函數。
        其具體功能靠js的面向對象支持,那么js的面向對象是什么樣子的那?和java 的有什么相同與不同?
        看代碼:

        代碼如下:
        代碼如下:
        var ClassName = function(v){
        this.value=v;
        this.getValue=function(){
        return this.value;
        }
        this.setValue=function(v){
        this.value=v;
        }
        }

        那么JS中的函數和類有什么不同呢?
        其實是一樣的,ClassName就是一個函數,當出現在new后面的時候就作為一個構造函數來構造對象。

        代碼如下:
        var objectName1 = new ClassName(“a”);//得到一個對象

        其中objectName1就是執行ClassName構造函數后得到的對象,而在ClassName函數中的this指的就是new之后構造出來的對象,所以objectName1會后一個屬性和兩個方法。可以通過這樣來調用他們:

        代碼如下:
        objectName1.setValue(''hello'');
        alert(objectName1.getValue());//對話框hello
        alert(objectName1.value) ;//對話框hello

        那么

        代碼如下:
        var objectName2 = ClassName(“b”);//得到一個對象

        這樣objectName2得到的是什么呢?顯然是方法的返回值,這里ClassName只作為了一個普通的函數(雖然首字母大寫了)。但是在之前寫的ClassName中并沒有返回值,所以objectName2會是undifinded那么“b”賦給誰了呢?在這并沒有產生一個對象,而只是單純的執行這個方法,所以這個“b”賦值給了調用這個方法的對象window,證據如下:
        var objectName2 = ClassName(“b”);//得到一個對象
        alert(window.value);//對話框b
        所以JS中的所有function都是一樣的,但是用途可能是不同的(用作構造對象抑或是執行一個過程)。
        下面該回到主題了initialize是干什么的?

        代碼如下:
        代碼如下:
        var Class = {
        create: function() {
        return function() {
        this.initialize.apply(this , arguments);
        }
        }
        }
        var A = Class.create();

        這段代碼是構造個一個function復制給A,這個function是

        代碼如下:
        代碼如下:
        function() {
        this.initialize.apply(this , arguments);
        }

        并且后面這個方法是用來做構造函數的。當使用這個構造函數來構造對象的時候,會讓構造出來的這個對象的initialize變量執行apply()方法,apply()的用途后面在說,繼續說initialize。這樣在初始化對象的時候會聯系到initialize(怎么聯系就要看apply的了)。
        那么

        代碼如下:
        代碼如下:
        A.prototype={
        initialize:function(v){
        this .value=v;
        }
        showValue:function(){
        alert(this.value);
        }
        }

        是什么意思呢?
        Prototype是“原型”的意思。A是一個function(),那么A. prototype,就是function中的一個變量,其實是個對象。這個對象擁有什么方法,那么function產生的對象就擁有什么方法,故
        var a = new A(‘helloWord!');
        a. showValue();//彈出對話框helloWord!
        所以a對象也會有initialize方法,不只如此,每一個有A構造出來的對象都會有一個initialize方法,而在前面說過,構造的時候會調用構造函數,構造函數里面會讓initialize去調用apply方法,于是在new A(‘helloWord!')的時候initialize回去調用apply方法。這也就是調用了一個初始化的方法。

        三、 call()和apply()
        下面開始研究apply(),在網上找了幾個資料,并結合自己的研究,了解了call()和apply()的功能。功能基本一樣,function().call(object,{},{}……)或者function().apply (object,[……])的功能就是對象object調用這里的funciton(),不同之處是call參數從第二個開始都是傳遞給funciton的,可以依次羅列用“,”隔開。而apply只有兩個參數,第二個是一個數組,其中存儲了所有傳遞給function的參數。
        this.initialize.apply(this , arguments);
        是什么意思?
        這里的第一個this,是指用new調用構造函數之后生成的對象,也就是前面的a,那么第二個this也當然應該是指同一個對象。那這句話就是this(也就是a)調用initialize方法,參數是arguments對象(參數的數組對象),所以在構造函數執行的時候,對象a就會去執行initialize方法來初始化,這樣就和單詞“initialize”的意思對上了。
        那么執行initialize方法的參數怎么傳遞進去的呢?

        四、 Arguments對象
        這段代碼能說明一切了:

        代碼如下:
        代碼如下:
        function test(){
        alert(typeof arguments);
        for(var i=0; i alert(arguments[i]);
        }
        }
        test("1","2","3");
        test("a","b");

        執行后alert(typeof arguments);會顯示object,說明arguments是對象。然后會依次打出1、2、3。說明arguments就是調用函數的實參數組。

        代碼如下:
        代碼如下:
        var Class = {
        create: function() {
        return function() {
        this.initialize.apply(this , arguments);
        }
        }
        }

        arguments 就是create返回的構造函數的實參數組,那么在
        var a = new A(‘helloWord!');
        的時候‘helloWord!'就是實參數組(雖然只有一個字符串),傳遞給方法apply,然后在調用initialize 的時候作為參數傳遞給初始化函數initialize。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        javascript中的self和this用法小結_javascript技巧

        javascript中的self和this用法小結_javascript技巧:一、 起因 那天用到prototype.js于是打開看看,才看幾行就滿頭霧水,原因是對js的面向對象不是很熟悉,于是百度+google了一把,最后終于算小有收獲,寫此紀念一下^_^。 prototype.js代碼片段 代碼如下:var Class = { create: functi
        推薦度:
        標簽: js javascript 總結
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: a级毛片免费全部播放无码| 日本亚洲中午字幕乱码| 在线观看肉片AV网站免费| 亚洲av无码成人精品区| 色窝窝亚洲av网| 亚洲?V无码成人精品区日韩| 精品亚洲成a人在线观看| 免费一看一级毛片人| 鲁啊鲁在线视频免费播放| 免费国产一级特黄久久| 免费夜色污私人影院网站| 亚洲伊人久久综合影院| 国产免费牲交视频免费播放| 亚洲尤码不卡AV麻豆| 日韩免费高清大片在线 | 亚洲一区无码精品色| 一个人免费观看日本www视频| 亚洲天堂中文字幕在线| 99免费在线视频| 久久久国产精品亚洲一区| 黄页网站在线看免费| 亚洲一区二区三区成人网站| 宅男666在线永久免费观看 | 成人A毛片免费观看网站| 亚洲AV无码一区东京热| 国产成人精品免费视频动漫| 亚洲中文字幕AV在天堂| 一本色道久久88综合亚洲精品高清| 日韩电影免费在线观看网址| 亚洲成人激情在线| 永久免费毛片在线播放| 成年大片免费视频播放一级| 国产亚洲成av片在线观看| 国产四虎免费精品视频| 四虎影视久久久免费观看| 亚洲国产精品国自产电影| 啦啦啦在线免费视频| 三级网站免费观看| 亚洲AV无码一区二区三区牛牛| 全亚洲最新黄色特级网站| 99蜜桃在线观看免费视频网站|