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的人物最后也是一掊土
    向善不是目的,而是抚慰心灵,更多的感受幸福,感谢别人给你行善的机会
    相信老子的话:万物生于有,有生于无,一切的道理都源于一个无法证明的假设
    我是好是坏就自然而然的摆在那里,并不会因为别人的评价而改变什么,我也不需要别人用一张纸来说明我什么,世间最难得的是自由



    支持大额赞助:
  • 相关阅读:
    Linux Centos7(Mac) 安装Docker教程
    SpringBoot应用操作Rabbitmq(fanout广播高级操作)
    SpringBoot应用操作Rabbitmq(topic交换器高级操作)
    SpringBoot应用操作Rabbitmq(direct高级操作)
    CCF 字符串匹配(find()函数的使用)
    PKU 1204 Word Puzzles(AC自动机)
    PKU 1932 XYZZY(Floyd+Bellman||Spfa+Floyd)
    PKU 1201 Intervals(差分约束系统+Spfa)
    PKU 2352 Stars(裸一维树状数组)
    PKU 3169 Layout(差分约束系统+Bellman Ford)
  • 原文地址:https://www.cnblogs.com/sky-view/p/3246581.html
Copyright © 2011-2022 走看看