王文洲的前后端学习
首页
  • VUE
  • ES6
  • JS进阶
  • JS进阶2
  • 第一周作业
  • 第三周作业
  • 第五周作业
  • 第六周作业
  • 《ES6 教程》
  • 《Vue》
  • 《JavaScript教程》
  • 《TypeScript 从零实现 axios》
面试必备

软件行业的小学生

立志做出震撼产品
首页
  • VUE
  • ES6
  • JS进阶
  • JS进阶2
  • 第一周作业
  • 第三周作业
  • 第五周作业
  • 第六周作业
  • 《ES6 教程》
  • 《Vue》
  • 《JavaScript教程》
  • 《TypeScript 从零实现 axios》
面试必备
  • 我的作业1
  • 我的作业3
    • 我的作业5
    • 我的作业6
    • 作业描述
    2020-10-20

    我的作业3

    #我的作业3

    # 1、

    var length = 100;
    function f1() {
      console.log(this.length)
    }
    var obj = {
      x: 10,
      f2: function(f1){
        f1();
        arguments[0]();
      }
    }
    obj.f2(f1,1,2,3);
    

    解析的过程及结果

    100
    4
    

    先解析f1()指向window的length,再计算整个arguments对象的长度

    # 2、

    var number = 1;
    var obj = {
    	number:2,
    	showNumber:function(){
    		this.number = 3;
    		(function(){
    			console.log(this.number);
    		})();
    		console.log(this.number);
    	}
    };
    obj.showNumber();
    

    解析的过程及结果

    1
    3
    

    第一个this由于是指向闭包函数,this指向window,第二个this指向自身函数showNumber

    # 3、

    用递归来实现5的阶乘

    	function p(n){
    	  n>1?n=n*p(n-1):1
    	return n;
    } p(5)
    

    # 4、

    闭包的写法?为什么需要用到闭包?

     function a(){
    	var i=0;
        function b(){
    		console.log(++i);
    	}b();
    }a();
    

    闭包是由构b()造函数体内定义另外的函数作为内部对象的保护。

    # 5、

    代码实现—利用闭包原理封装对象缓存局部变量name的值

    	function class(){
    		var name;
    		function getName(){
    			return name;
    		}
    		function setName(value){
    			name = value;
    		}
    	}
    

    # 6、

    function f() {
        console.log(this.a )
    }
    var obj = {
        a: 2,
        f: f
    }
    var f2 = obj.f; 
    var a = "hello world"; 
    f2();
    

    问:this的指向是?运行的结果是? this指向window, 运行结果为hello world

    # 7、

    function f(something) {
        console.log(this.a, something)
        return this.a + something
    }
    var obj = {
        a: 2
    }
    var f2 = function() {
        return f.apply(obj, arguments)
    }
    var b = f2(3); 
    console.log(b); 
    

    运行的结果是:

    2,3
    5 
    

    apply方法劫持另外一个对象的方法,继承另外一个对象的属性.

    我的作业1
    我的作业5

    ← 我的作业1 我的作业5→

    最近更新
    01
    我的作业6
    01-02
    02
    我的作业5
    01-02
    03
    JS进阶2(专属学习)
    12-25
    更多文章>
    Copyright © 2020-2023 飞刀和雨 | 沪ICP备16038939号-1
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式