zoukankan      html  css  js  c++  java
  • javascript闭包,arguments和prototype

    prototype

    javascript中一切皆对象,并且对象的属性和方法可以任意添加,例如:

    var obj=function(){};

    obj.name="jack";

    但是下面的代码就有问题了

    var obj2=new obj;

    alert(obj2.name);//输出undefined因为name属性为obj对象所独有

    如果想要使新建对象继承某些属性和方法,就需要对对象原型进行扩展,prototype也正是这个意思:

    obj.prototype.name=null;

    var obj2=new obj;

    alert(obj2.name)

    这样就OK了。

    note:只有函数对象才有prototype,var obj={};然后obj.prototype.xxx=null这样是不可以的,利用this.property也可以给对象的实例来增加属性;prototype默认的是会自带一个属性constructor其实就是对应了函数本身。

    闭包

    意思是函数可以使用函数之外的变量,这再正常不过了,但是在函数中包含函数的情况下,需要稍加注意:

    function add(i)

    {

    return function(){return ++i;}

    }

    add(2)();//输出3,这说明,add函数返回了一个函数对象,这个函数对象携带了i的值以备后面使用,i或许会放在对象的隐藏对象arguments里

    arguments

    javascript里面没有函数重载,但是可以通过arguments来实现类似功能

    只不过要在函数体里面进行类型或者数量的判断以执行相对应的操作

    相信世界是平的
    谨记四个字“修身养性”
    大江东去浪淘尽英雄,再牛B的人物最后也是一掊土
    向善不是目的,而是抚慰心灵,更多的感受幸福,感谢别人给你行善的机会
    相信老子的话:万物生于有,有生于无,一切的道理都源于一个无法证明的假设
    我是好是坏就自然而然的摆在那里,并不会因为别人的评价而改变什么,我也不需要别人用一张纸来说明我什么,世间最难得的是自由



    支持大额赞助:
  • 相关阅读:
    P1030 求先序排列 P1305 新二叉树
    spfa
    Clairewd’s message ekmp
    Cyclic Nacklace hdu3746 kmp 最小循环节
    P1233 木棍加工 dp LIS
    P1052 过河 线性dp 路径压缩
    Best Reward 拓展kmp
    Period kmp
    Substrings kmp
    Count the string kmp
  • 原文地址:https://www.cnblogs.com/sky-view/p/3246581.html
Copyright © 2011-2022 走看看