• new的探究


    new操作符易用,但是往往容易忽略对其的理解。

    var foo= new Foo();

    这个简单的语句,涉及到了一系列的步骤:

      1),给对象开辟内存,即 var foo= {};

      2),修改新对象的隐式原型对象,即 foo.__proto__ = Foo.prototype;

      3),在foo上下文中执行Foo函数,即 Foo.call(foo,arguments);

    这样,我们就得到了一个隐式原型指向Foo.prototype的对象。

    但是,在构造函数Foo 的实现中,其返回的值会因为返回值类型的不同而导致foo的值不同。

      1),若在Foo构造函数中返回基本类型值,即string,number,boolean,null,undefined,则默认

        返回该类型的实例。

      2),若返回值为引用(包括对象,数组,函数)类型,则返回该值。

    也可以以匿名函数作为构造函数返回一些引用类型,最常用的莫过于通过匿名构造函数构造闭包。

      

    var lists = document.getElementsByTagName("li");
    for(var i=0,l=lists.length; i < l; i++){
      lists[i].onclick = new function(){
        var t = i;
        return function(){
          alert(t+1)
        }
      }
    }
  • 相关阅读:
    街边的泥人张
    没事试试50mm1.4
    WWOOF介绍一下,但貌似我们利用不了
    护照和签证
    071205还是晴photo
    忘年旅行
    12月6日大雪
    12月5日
    周六
    071204 晴
  • 原文地址:https://www.cnblogs.com/accordion/p/4154136.html
Copyright © 2020-2023  润新知