js函数

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
函数 < Function >
JS是一门函数式的面向对象编程语言

      1.函数内的arguments设计缺陷,是个类数组,不能使用数组的方法, 解决办法--->>rguments.__proto__ = Array.prototype;

    2. 函数里面的this,缺陷,  var that = $(this); 保存变量

   3. for in 在便利对象的时候,会便利出原型上自己定义的方法和属性, 解决办法
    for (var key in obj) {
        if (obj.hasOwnProperty(key){}
    }

4.没有块级作用域 if while do for (只有函数作用域和全局作用域)

<script type='text/javascript'>
    //每个函数创建完毕有两个隐藏属性 __proto__ 、 prototype(里面有一个constructor属性,指向函数本身)
    //每个函数内部有俩个隐藏属性     this(执行主体) 、 arguments(函数内接收实参对象)<类数组(arry-like)> arguments.__proto__ = Array.prototype;
    //函数三角色: 对象、普通函数、类

    var fn = function() {};
    fn.__proto__ === Function.prototype;
    fn.prototype.constructor === fn;
    fn.__proto__.__proto__ === Object.prototype;
    fn instanceof Function;

    var obj = {};
    obj.__proto__ === Object.prototype;

    var ary = [];
    ary.__proto__.__proto__ === Object.prototype;

    Function.prototype instanceof Object;
    Object instanceof Function

    fn.__proto__ instanceof Object;
    fn.__proto__.__proto__ instanceof Object;  //false


    var Que = function(type) {
        this.type = type;
    };
    Que.prototype.get_status = function() {
        console.log(this.type);
    };
    Que.prototype.add = function() {
        console.log(arguments);
        console.log(this);
    }
    var myQue = new Que(1);

     myQue.get_status();

     //Apply
     var ary = [1, 2, 3];
     var sum = myQue.add.apply(null, ary);

     var obj1 = {
        type: 2,
     };

    var s = myQue.get_status.apply(obj1);
    console.log(s)
QQ截图20170713135027.png
</script>

</body>
</html>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 6,650评论 1 10
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,422评论 2 17
  • 函数声明和函数表达式有什么区别 (*)解析器会率先读取函数声明,并使其在执行任何代码之前可以访问;函数表达式则必须...
    coolheadedY阅读 3,068评论 0 1
  • 三、闭包和高阶函数 3.1 闭包 3.1.1 变量的作用域 所谓变量的作用域,就是变量的有效范围。通过作用域的划分...
    梁同学de自言自语阅读 5,356评论 0 6
  • 人生像是一列火车。 人生的前24年,我虽是驾驶员,却无奈驾驶室里坐满了庸众,人生的小火车开的中规中矩。活着更像是一...
    Gedion阅读 1,657评论 0 1

友情链接更多精彩内容