<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    一道考察JS new 以及 instanceof 的面試題

    摘要:一道面試題,考察 是否理解  new FunctionName 原理 以及 instanceof 的原理

    聲明:這道題目靈感來源淘寶UED部門玉伯的blog。

    (1) 關(guān)于 new

    大家對構(gòu)造函數(shù),估計都知道。 但是JavaScript 中的構(gòu)造函數(shù)是否跟你理解中的一模一樣呢?

    讓我們從一道面試題中,看原理:

    function Dog(name) {
        this.name = name;
        Dog.prototype = {
            shout: function() { alert("I am " + this.name); }
        };
    }
    var dog1 = new Dog("Dog 1");
    var dog2 = new Dog("Dog 2");
    dog2.shout();
    dog1.shout();

    請問運行結(jié)果是什么?

    結(jié)果如果沒有出乎你的意料,建議不用在此浪費時間。

    如果覺得答案有點難理解請繼續(xù)……

    在執(zhí)行new 的時候,都做了什么:

    // var dog1 = new Dog() 的等價偽代碼:
    var dog1 = (function(name) {
        var o = {};
        o.__proto__ = Dog.prototype; // line 2
        Dog.call(o);
     dog1.name = name;
        Dog.prototype = {/* some code */}; // line 4
        return o; // line 5
    })();

    我沒做什么鋪墊,直接將new 的過程用偽代碼表示出來。發(fā)現(xiàn)在new 的過程也就是執(zhí)行構(gòu)造函數(shù)的時候做的事情是產(chǎn)生一個對象 并且是將原Dog 的prototype 繼承了過來。

    注意line 4 ,這個時候Dog的prototype 發(fā)生了改變。

    這導(dǎo)致了一個本質(zhì)的轉(zhuǎn)變: dog1 instanceof Dog 這將變?yōu)閒alse

    引出這道題目的第二個知識點考察。

    (2) 關(guān)于 instanceof
     
     
     結(jié)論:看隱藏的 dog1.__proto__ 屬性是否等于 Dog.prototype !
     
    看了這么多有趣的解釋是否試試手呢?

    好吧,讓我們看看下面的題目:(注意由于瀏覽器不同,javascript腳本引擎也不同,建議至少在firefox 或者 chrome 里面來看看,當(dāng)然也順便用IE 不同版本看看)

    function Bird() {}
    var bird = {};
    bird.__proto__ = Bird.prototype;
    alert(bird instanceof Bird); // true or false?

    posted on 2010-10-11 00:28 -274°C 閱讀(333) 評論(0)  編輯  收藏 所屬分類: web前端

    常用鏈接

    留言簿(21)

    隨筆分類(265)

    隨筆檔案(242)

    相冊

    JAVA網(wǎng)站

    關(guān)注的Blog

    搜索

    •  

    積分與排名

    • 積分 - 914554
    • 排名 - 40

    最新評論

    主站蜘蛛池模板: 黄在线观看www免费看| 99久久这里只精品国产免费| mm1313亚洲国产精品美女| 亚洲AV无码之国产精品| 国产卡二卡三卡四卡免费网址| 亚洲大片免费观看| 黄色免费网站网址| 亚洲一级毛片在线观| 女人毛片a级大学毛片免费| 亚洲人成自拍网站在线观看| 国产精品色午夜视频免费看| 青娱乐在线免费观看视频| 亚洲免费视频一区二区三区| a级午夜毛片免费一区二区| 久久精品九九亚洲精品| AV片在线观看免费| 免费国产黄网站在线看| 亚洲精品国产精品乱码视色 | 亚洲人成777在线播放| 黄网站色在线视频免费观看| 亚洲区日韩精品中文字幕| 免费播放特黄特色毛片| 中文在线观看免费网站| 亚洲国产成人久久精品动漫| 中字幕视频在线永久在线观看免费| 亚洲日韩国产欧美一区二区三区| 亚洲成年人啊啊aa在线观看| 免费萌白酱国产一区二区三区| 亚洲图片中文字幕| 亚洲国产免费综合| 小日子的在线观看免费| 一区二区亚洲精品精华液| 亚洲免费无码在线| 久久精品免费一区二区| 朝桐光亚洲专区在线中文字幕| 亚洲国产另类久久久精品| 最近的免费中文字幕视频| 在线观看免费视频网站色| 亚洲狠狠成人综合网| 久久亚洲2019中文字幕| 毛片免费观看的视频在线|