先理一下函数的功能:es6
在上面列出的函数功能对象皆具备数组
由于闭包、面向对象都须要与其有关,而且函数对于JavaScript的重要性则是无与伦比闭包
函数声明和函数表达式函数
函数声明:学习
function
开头,而且函数名为强制存在,参数名可选,函数体用大括号{}
包起来。function square(number) { return number * number; }
注意函数名必须存在,这样才能够被其余地方进行调用。函数能够在函数里声明 ,[闭包]()与此有关。this
函数表达式:spa
函数表达式则是能够被用来做为参数、做为返回值。能够快速的被建立使用。prototype
var fn = function() { console.log("hello world") } fn() function outPut (callback) { callback() } outPut(fn)
函数名不是必须的code
箭头函数对象
function getName (name) { return (function(j) { return j })(name) } var showName = getName("kangkang") console.log(showName)
下面改写为箭头函数形式
function getName (name) { return (j=>j)(name) } var showName = getName("kangkang") console.log(showName)
遵循 参数=>被返回的表达式的值
、(p,b)=>p+b
至关于function(p,b){return p+b}
,也可使用代码块进行必要的操做,此时须要显示代表return
的值。
一个须要注意的地方 函数提高仅适用于函数声明,而不适用于函数表达式。
每一个对象(函数)具备一个原型属性,指向能够被实例共享的属性和方法。而原型链在寻找某个属性时体现的比较清楚:
function one () { this.value = 1 } one.prototype.output = function() { console.log(this.value) } function two () { this.value = 2 } function three () { this.value = 3 } two.prototype = Object.create(one.prototype) three.prototype = Object.create(two.prototype) var one1 = new one() var two1 = new two() var three1 = new three() three1.output() // 对于three1来讲并无output这个方法,就是经过原型链这个链进行一层一层寻找的
constructor
属性指向建立实例的函数我的学习备忘,若有谬误,欢迎指正。