JavaScript的函数与构造函数

函数与构造函数

    • 1.函数
      • 1.1函数的arguments
      • 1.2函数的length
      • 1.3函数的name
    • 2.构造函数
      • 2.1案例1
      • 2.2构造函数解析过程
      • 2.3案例2
    • 3.补充new关键字

1.函数

1.1函数的arguments

	function fn(a,b){
		 var c=a+b
		 console.log(c)
		 //函数内部有一个关键字 arguments,代表实际传入函数的参数列表(类数组)
		 console.log(arguments)
		}
		//实际传入函数的参数(实参) 的个数可以比形参的个数多,按照顺序赋值  
		//不会影响程序的执行逻辑但是会影响性能
		fn(10,20,30,40)

1.2函数的length

	function fm(a, s, d, f, g) {

		}
		console.log(fm.length);

结果:
在这里插入图片描述

1.3函数的name

function fn() {

		}
		console.log(fn.name)

		var a = function () {}
		console.log(a.name)

		var a = function fn() {}
		console.log(a.name)

结果:
在这里插入图片描述

2.构造函数

2.1案例1

		function fn(name, birthday) {
			this.name = name
			this.birthday = birthday
			this.life = 1
			this.money = 0
			this.makeMoney = function () {
				this.money += 1
			}
		}
		var obj = new fn("karen", "1997-02-03")
		obj.makeMoney()
		obj.makeMoney()
		obj.makeMoney()
		console.log(obj)

结果:
在这里插入图片描述

2.2构造函数解析过程

1. 创建一个空对象 
2. 运行构造函数,让内部的this指向创建的对象(用创建的空对象去调用构造函数)
3. 整个表达式的结果看函数的返回值:
3.1返回值是引用数据 那么就是返回值(之前创建的对象就会销毁)
3.2返回值不是引用数据 那么就是这个运行完毕之后的创建的那个对象

2.3案例2

	function fn() {
			var obj = {
				say: function () {
					return obj
				}
			}
			return obj
		}
		var re = new fn()
		console.log(re);
		var re2 = fn().say
		console.log(re2);
		var re3 = new re2()
		console.log(re3);

结果:
JavaScript的函数与构造函数_第1张图片

3.补充new关键字

new后面一般跟一个函数   new会创建对象,而且会去调用这个函数
new fn===>创建对象 然后调用函数 不传参==>new无参
new fn()==>创建对象 然后调用函数 并传参数==>new带参

你可能感兴趣的:(JavaScript精通之路,javascript,前端,开发语言)