javascript函数总结(二)

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对象定义实例的方法,给构造函数定义类字段和类属性。

 

猜你喜欢

转载自1752306891.iteye.com/blog/2323733