js中函数创建和调用方式还有this内部指向

函数的定义方式

 // 1. 自定义函数(命名函数) 

        function fn() {};

        // 2. 函数表达式 (匿名函数)

        var fun = function() {};


        // 3. 利用 new Function('参数1','参数2', '函数体');

        var f = new Function('a', 'b', 'console.log(a + b)');
        f(1, 2);
        // 4. 所有函数都是 Function 的实例(对象)
        console.dir(f);
        // 5. 函数也属于对象
        console.log(f instanceof Object);

调用方式

 // 函数的调用方式

        // 1. 普通函数
        function fn() {
            console.log(this); // window
            console.log('我是普通函数');

        }
        // fn();   fn.call()
        // 2. 对象的方法
        var o = {
            sayHi: function() {
                console.log('我是对象的方法');
            }
        }
        o.sayHi();
        // 3. 构造函数
        function Star() {};
        new Star();
        // 4. 绑定事件函数
        // btn.onclick = function() {};   // 点击了按钮就可以调用这个函数
        // 5. 定时器函数
        // setInterval(function() {
        //     console.log(this);
        // }, 1000);  //这个函数是定时器自动1秒钟调用一次
        // 6. 立即执行函数
        (function() {
            console.log(this); // window
            console.log('人生的巅峰');
        })();
        // 立即执行函数是立即执行不用手动调用自动调用
    </script>

还有箭头函数

<script type="text/javascript">
		// 箭头函数是用来简化函数定义语法的
		// const fn = () => {
		// 	console.log(123)
		// }
		// fn();
		
		// 在箭头函数中 如果函数体中只有一句代码 并且代码的执行结果就是函数的返回值 函数体大括号可以省略
		// const sum = (n1, n2) => n1 + n2;	 
		// const result = sum(10, 20);
		// console.log(result)
		
		// 在箭头函数中 如果形参只有一个 形参外侧的小括号也是可以省略的
		// const fn = v => {
		// 	alert(v);
		// }
		// fn(20)
		// 箭头函数不绑定this 箭头函数没有自己的this关键字 如果在箭头函数中使用this this关键字将指向箭头函数定义位置中的this
		function fn () {
			console.log(this);
			return () => {
				console.log(this)
			}
		}
		const obj = {name: 'lisi'};
		const resFn = fn.call(obj);
		resFn();
	</script>

函数内部的this指向
普通函数调用--------------this指向window
构造函数调用--------------this指向实例对象,原型对象里面的方法也指向实例对象
对象方法调用--------------this指向该方法所属对象
事件绑定方法--------------绑定事件对象
定时器函数-----------------this指向window
立即执行函数--------------this指向window

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值