• 原型与原型链

    JavaScript 中,万物皆对象!但对象也是有区别的。分为普通对象和函数对象,Object ,Function 是JS自带的函数对象。

    怎么区分?其实很简单,凡是通过 new Function() 创建的对象都是函数对象,其他的都是普通对象。Function Object 也都是通过 New Function()创建的。

    ...ready more
  • 更好的理解闭包

    闭包是Javascript常说的一个话题,面试官都问的问题,很多高级应用都要依靠闭包实现。

    1
    闭包是指那些能够访问独立(自由)变量的函数 (变量在本地使用,但定义在一个封闭的作用域中)。换句话说,这些函数可以“记忆”它被创建时候的环境。

    要理解闭包,首先要弄懂Javascript的变量作用域。

    ...ready more
  • Javascript的函数递归

    递归是什么?

    想个标题已经让我很纠结了,究竟是函数递归还是递归函数?

    看了下MDN的说明是: 函数可以被递归,就是说函数可以调用其本身。

    那递归就是函数的里面再调用自己,从而形成一个循环。

    还是在实战才会学得更快,来战吧。

    用递归计算阶乘:

    1
    2
    3
    function factorial(n){
    return (n * factorial(n - 1));
    }

    这里就是函数里,调用了自己不停的互乘。当运行factorial(5)就不停计算 5*4*3*2...的计算下去,但问题是这没有尽头呀!直到栈溢出抛出 Uncaught RangeError: Maximum call stack size exceeded(…) 也不会有返回值。

    这种无尽的递归称为死递归,它和死循环一样恐怖。

    ...ready more
  • 前端是什么鬼?

    “XXX,你现在在做什么啦?”

    “我现在做前端开发啦~”

    “擦,你不是一直做美工的吗?前端是什么鬼?”

    “…”

    不要拦住我,让我打死这丫的。

    都怪当年,年少无知,在美工这个坑蹲的有点久。。。

    ...ready more
  • 我理解的HTTP中的GET与POST是怎么样子的

    今天的面试中,面试官问到一个问题是:你是怎么理解GET和POST这两个HTTP请求的?

    这个我真没深究中他们中区别,一下子有点懵了…

    我想了想就回答:GET是请求获取数据,POST是提交数据;GET没有POST安全,会把请求的东西暴露在URL上。

    然后面试官蛋定的问:还有吗?

    “没有了,我理解的就这么多了。。。”

    “。。。”

    经过个这轮尴尬的面试,回来后迫不及待的把GET与POST深挖出来:

    ...ready more
  • JavaScript结构全面分析图

    今天在前端网,看到篇文章,里面有好几个JS结构的分析图,特别全面。也方便看着一点一点突破,原来JS涵盖的是非常多的。也看到了自己在那方面还不足和还没了解到的。数组都差点把我看晕了,但越难学越喜欢折腾。发现我越来越喜欢JS数组这块的学习了,简直是迷上了。。。像当年学习CSS动画的那股冲劲。

    ...ready more
  • JavaScript 数组方法对比(转载)

    JavaScript提供了多种新增、移除、替换数组元素的方法,但是有些会影响原来的数组;有些则不会,它是新建了一个数组。

    注意:区分以下两个方法的不同点:

    • array.splice() 影响原来的数组
    • array.slice() 不影响原来的数组
    ...ready more
  • 数组去重和等排序

    记录一下数组利用indexOf去重和sort排序。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var arr=[1,1,2,3,5,8,3,5,5,7,4];
    var trr=[];
    //遍历数组arr
    for (var i = 0; i <arr.length; i++) {
    if(trr.indexOf(arr[i])==-1){
    trr.push(arr[i])
    }
    }
    //sort 新数组
    function tab(a,b){
    return a-b;
    }
    console.log(trr)//输出[1, 2, 3, 5, 8, 7, 4]
    ...ready more
  • 一直在路上

    在校时,就喜欢做网站,参加了学校的网页设计大赛,当时用ASP做了个PS学习站,还拿了二等奖。那时做网站还是主流是table布局,很多效果还有局限。到了快毕业那会,在网上接触到CSS布局,各种特效,网站的换肤最吸引我。那时就迷上了CSS,记得我常去的网站的520css学习CSS的各种属性和方法,如今,网站已不在了。

    ...ready more
  • JavaScript自定义函数时参数设置默认值的方法

    定义一个函数时,一定参数值往往需要一个默值,放便重复调用。

    使用判断

    用if…else的简写:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function sum(a,b){
    var a = arguments[0] ? arguments[0] : 1;//设置参数a的默认值为1
    var b = arguments[1] ? arguments[1] : 2;//设置参数b的默认值为2
    return a+b;
    }

    //调用
    alert( sum() ); //输出3
    alert( sum(10) ); //输出12
    alert( sum(10,20) ); //输出30
    alert( sum(null,20) ); //输出20
    ...ready more