再记面向对象

再记面向对象

函数和对象的联系

先理一下函数的功能:es6

  1. 建立:能够经过字面量建立
  2. 能够赋值给变量、数组做为成员和其余的对象做为属性
  3. 做为函数的参数
  4. 做为返回值
  5. 自身能够添加属性

在上面列出的函数功能对象皆具备数组

详细函数介绍

为何介绍函数?

由于闭包、面向对象都须要与其有关,而且函数对于JavaScript的重要性则是无与伦比闭包

函数建立的几种方法:

  • 函数定义: 函数声明和函数表达式(回调函数与其关系)
  • 箭头函数: es6增长(注意箭头函数的this)
  • 函数构造函数:new function ('a','b','return a+b');
  • 生成器函数:
  1. 函数声明和函数表达式函数

    函数声明:学习

    • 函数声明用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

  1. 箭头函数对象

    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的值。

调用函数:

  • 函数的调用,定义一个函数并不会执行它,须要调用。在调用时,你须要给定可选的参数,若是参数为空则无需给定。函数声明的提高可让函数不在顶层被声明。

    一个须要注意的地方 函数提高仅适用于函数声明,而不适用于函数表达式。

  • 具体函数的调用在this上的改变使人捉摸不透,我也写了篇笔记 [this什么时候为什么值?]()待添加

原型链:

每一个对象(函数)具备一个原型属性,指向能够被实例共享的属性和方法。而原型链在寻找某个属性时体现的比较清楚:

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属性指向建立实例的函数

我的学习备忘,若有谬误,欢迎指正。

相关文章
相关标签/搜索