中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      JavaScript中的prototype.bind()方法介紹

      時間:2024-09-24 07:57:38 JavaScript 我要投稿
      • 相關推薦

      有關JavaScript中的prototype.bind()方法介紹

        以前,你可能會直接設置self=this或者that=this等等,這樣做當然也能起作用,但是使用Function.prototype.bind()會更好,看上去也更專業。

        下面舉個簡單的例子:

        復制代碼 代碼如下:

        var myObj = {

        specialFunction: function () {

        },

        anotherSpecialFunction: function () {

        },

        getAsyncData: function (cb) {

        cb();

        },

        render: function () {

        var that = this;

        this.getAsyncData(function () {

        that.specialFunction();

        that.anotherSpecialFunction();

        });

        }

        };

        myObj.render();

        在這個例子中,為了保持myObj上下文,設置了一個變量that=this,這樣是可行的,但是沒有使用Function.prototype.bind()看著更整潔:

        復制代碼 代碼如下:

        render: function () {

        this.getAsyncData(function () {

        this.specialFunction();

        this.anotherSpecialFunction();

        }.bind(this));

        }

        在調用.bind()時,它會簡單的創建一個新的函數,然后把this傳給這個函數。實現.bind()的代碼大概是這樣的:

        復制代碼 代碼如下:Function.prototype.bind = function (scope) {

        var fn = this;

        return function () {

        return fn.apply(scope);

        };

        }

        下面在看一個簡單的使用Function.prototype.bind()的例子:

        復制代碼 代碼如下:

        var foo = {

        x: 3

        };

        var bar = function(){

        console.log(this.x);

        };

        bar(); // undefined

        var boundFunc = bar.bind(foo);

        boundFunc(); // 3

        是不是很好用呢!不過遺憾的是IE8及以下的IE瀏覽器并不支持Function.prototype.bind()。支持的瀏覽器有Chrome 7+,Firefox 4.0+,IE 9+,Opera 11.60+,Safari 5.1.4+。雖然IE 8/7/6等瀏覽器不支持,但是Mozilla開發組為老版本的IE瀏覽器寫了一個功能類似的函數,代碼如下:

        復制代碼 代碼如下:

        if (!Function.prototype.bind) {

        Function.prototype.bind = function (oThis) {

        if (typeof this !== "function") {

        // closest thing possible to the ECMAScript 5 internal IsCallable function

        throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");

        }

        var aArgs = Array.prototype.slice.call(arguments, 1),

        fToBind = this,

        fNOP = function () {},

        fBound = function () {

        return fToBind.apply(this instanceof fNOP && oThis

        ? this

        : oThis,

        aArgs.concat(Array.prototype.slice.call(arguments)));

        };

        fNOP.prototype = this.prototype;

        fBound.prototype = new fNOP();

        return fBound;

        };

        }

      【JavaScript中的prototype.bind()方法介紹】相關文章:

      JavaScript數組常用方法介紹09-04

      詳解JavaScript中的splice()使用方法08-20

      Javascript中arguments對象的詳解和使用方法08-20

      JavaScript常用方法匯總10-25

      javascript跨域訪問的方法07-09

      javascript編程異常處理的方法08-04

      JavaScript fontcolor方法入門實例07-07

      有關深入理解JavaScript中的并行處理的介紹10-14

      JavaScript中的with關鍵字07-24

      在Java中執行JavaScript代碼07-14

      主站蜘蛛池模板: 无码一区二区三区久久精品| 亚洲激情人体艺术视频| 盘锦市| 亚洲国产日韩av一区二区| 久久综合给合久久狠狠狠9| 亚洲av五月天天堂网| 石景山区| 耒阳市| 新乡县| 宾阳县| 台南县| 张掖市| 宁蒗| 麻豆国产AV网站| 蜜臀av国内精品久久久人妻| 亚洲性爱区免费视频一区| 少妇被粗大猛进进出出| 国内精品久久久久国产盗摄| 亚洲精品成人av一区二区| 日韩精品永久免费播放平台| 崇礼县| 国产激情视频在线| 久久AⅤ无码精品色午麻豆| 秦皇岛市| 精品久久杨幂国产杨幂| 亚洲国产成人久久综合三区| 日本一区二区三区在线播放| 亚洲二区三区在线播放| 亚洲欧美国产成人综合不卡| 国产精品综合色区av| 女同性恋精品一区二区三区| 蜜桃在线播放免费一区二区三区 | 天祝| 道真| 霍州市| 国产在线一区二区三区在线观看 | 开封市| 亚洲综合1区2区3区| 亚洲va欧美va人人爽夜夜嗨| 亚州一区二区三区四区| 久久综合激激的五月天|