1、Function 构造函数(即上次总结继续哦)
不管是通过函数定义语句还是函数直接量表达式,函数的定义都要使用function关键字。但函数还可以通过Function()构造函数来定义Function()构造函数可以传入任意数量的字符串实参
var f = function(x,y){ return x*y };
可调用的对象是一个对象,可以在函数调用表达式中调用这个对象。所有的函数都是可调用的,但并非所有的可调用对象都是函数。
function isFunction(x){ return Object.prototype.toString.call(x) === "[object Function]"; }
使用函数处理数组,就是说在JS中应用函数式编程技术
var data = [1,1,3,5,5]; var total = 0; for(var i=0;i<data.length;i++) total +=data[i]; var mean = total/data.length;
辣么这道题的结果为15。
高阶函数就是是指把另一个函数作为参数或返回值的函数。
一次完整的函数调用拆成多次函数调用,每次传入的实参都是完整实参的一部分,每个拆分开的函数叫做不完全函数,每次调用都称为不完全调用,他每次调用都会返回一个函数,直到的到最后结果。
function mapper(f){ return function(a){a.forEach(f)} } var x=function(x){console.log(x)} var y=mapper(x);
给y传一些参数
y([1,2,3]) 然后输出的结果为: 1 2 3
记忆函数是什么呢?记忆函数就是把上次的结果缓存起来。
构造函数:使用关键字new来调用构造函数会自动创建一个新对象,构造函数的prototype属性被用做新对象的原型。
原型对象是类的唯一标识:当且仅当两个对象继承自同一个原型对象时,它们才是属于同一个类的实例。
每个函数都自动拥有一个prototype属性
function Cat(name,color){ this.name = name; this.color = color; } Cat.prototype.type = "猫科动物"; var cat1 = new Cat("大毛","黄色"); var cat2 = new Cat("二毛","黑色"); console.log(cat1.type);
打印结果为:猫科动物。
这个属性的值是一个对象,这个对象包含唯一一个不可枚举属性constructor。constructor属性的值是一个函数对象
function Cat(name,color){ this.name=name; this.color=color; }var cat1 = new Cat("大毛","黄色"); var cat2 = new Cat("二毛","黑色"); console.log(cat1.name); console.log(cat1.color); console.log(cat1.constructor == Cat);//ture
JS中的类牵扯三种不同的对象,构造函数对象,原型对象,实例对象。第一步,先定义一个构造函数,并设置初始化新对象的实例属性,然后给构造函数的prototype对象定义实例的方法,给构造函数定义类字段和类属性。