zoukankan      html  css  js  c++  java
  • 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)
        }
      }
    }
  • 相关阅读:
    使用Python往手机发送短信(基于twilio模块)
    春&风
    故乡
    非常完美
    风 记忆
    风誓
    MATLAB的循环结构
    你要的快乐
    夕颜
    MATLAB的基本元素
  • 原文地址:https://www.cnblogs.com/accordion/p/4154136.html
Copyright © 2011-2022 走看看