函数数据类型:
1.普通函数
- 类(内置类&自定义类)
对象数据类型:
{}普通对象 [] 数组对象 /^$/正则对象 日期对象 Math函数对象 arguments类数组对象
HTMLCollection/NodeList元素或者节点集合类数组对象...
实例是对象数据类型
- 类的prototype是对象数据类型(Function.prototype除外,它是一个匿名空函数)
-
函数的三种角色
普通函数
形参、实参、ARGUMENTS、RETURN、箭头函数私有作用域(栈内存、执行上下文)形参赋值 & 变量提升作用域链栈内存的释放和不释放(闭包)
2.构造函数(类)
+ 类和实例+ prototype 和 __proto__ 原型和原型链+ instanceof+ constructor+ hasOwnProperty+ ...
- 普通对象
+ 它是由键值对组成的+ ..
function Fn(n, m) {this.x = n + m;this.y = n - m;let total = n * m;return total;}Fn.prototype.say = function () {console.log('SAY');}//=>普通函数let total = Fn(20, 10);//=>构造函数(类和实例)let f = new Fn(20, 10);//=>普通对象Fn.total = 1000;
function Foo() {getName = function () {console.log(1);};return this;}Foo.getName = function () {console.log(2);};Foo.prototype.getName = function () {console.log(3);};var getName = function () {console.log(4);};function getName() {console.log(5);}Foo.getName();getName();Foo().getName();getName();new Foo.getName(); //=>Foo.getName:输出2这个方法(AF2) =>new AF2()new Foo().getName();new new Foo().getName();
