美文网首页
面试题实际应用

面试题实际应用

作者: BeierYao | 来源:发表于2017-06-02 10:33 被阅读0次

    function Foo() {//这是一个方法,也可以是一个没有实例的类

        getName = function(){ alert(1); };//这是foo方法里的一个方法,只能在方法里访问得到,别的地方都访问不到。

        return this;//这里返回的是全局window对象,并不是foo本身的实例。

    }

    //

    //console.log(Foo());//你这里是执行了这个方法,里面返回了一个this,也就是window对象。

    Foo.getName = function() { alert(2); };//这里是在foo方法上加了方法getname,也就是把foo方法当成对象了。

    Foo.prototype.getName = function(){ alert(3); };//这里的意思是在foo所有的实例对象上加了个方法getnanme,和上面的不一样。

    var getName = function() { alert(4); };//这是是全局的var方法,this访问不到,只有直接getname才能执行。

    function getName(){ alert(5); }//这是一个全局的this方法,this也就是window访问的到。

    //

    Foo.getName(); //这个很简单吧,是2

    getName(); //这个是4

    Foo().getName(); // foo()返回this,也就是window,是5

    this.getName(); // 这个也是5

    new Foo.getName(); // 这个先会执行foo.getname,返回的是一个function方法,new foo.getname 就会返回方法的实例,所以里面的内容也会被执行,也会弹出2

    new Foo().getName(); // 这里会先实例foo,foo的实例再执行getname方法,也就是Foo.prototype.getName。所以3

    new new Foo().getName(); // 这里会先执行new Foo()得到foo的实例,再获得到getname方法,也就是new foo().getname 得到一个方法,然后又被new,这时候getname被执行也就是弹出了3

    记住,new (这里不管是什么都先执行)()

    new Foo.getName() 先执行foo.getname

    new Foo().getName() 先执行foo

    new new Foo().getName()先执行foo,然后执行 new foo().getname

    相关文章

      网友评论

          本文标题:面试题实际应用

          本文链接:https://www.haomeiwen.com/subject/vcoyfxtx.html