美文网首页
Javascript学习笔记——8.2 函数调用

Javascript学习笔记——8.2 函数调用

作者: IFELSE | 来源:发表于2018-06-21 10:22 被阅读0次

函数内的代码在定义时并不会执行,只有在调用时才会执行.

有四种方法可以调用函数:

  • 作为函数
  • 作为方法
  • 作为构造函数
  • 通过call()和apply()间接调用

函数调用

最普通的调用方式

方法调用

如果一个函数是一个对象的属性,这个属性就被成为方法

function sayHello(){
    console.log('hello')
}
person = {name:'mike',age:18}
person.sayHello = sayHello
person.sayHello() //hello
  • 方法调用和函数调用的一个很大区别是调用上下文(context)不同,方法调用的上下文是它所在的对象,它可以使用this引用对象.但this是关键字,不是变量或属性名,不能直接给this赋值.
function sayHello(){
    console.log(this.name+' says:"hello, I\'m '+this.age+' years old"')
}
person = {name:'Mike',age:18}
person.sayHello = sayHello
person.sayHello() //Mike says:"hello, I'm 18 years old"
  • 函数调用和其他属性一样,除了通过点来访问,还可以通过方括号来调用,而且方括号内可以是表达式,可以实现一些通过点访问无法完成的功能
function a(){console.log('method a is invoked')}
o = {}
o[3] = a
o[1+2]() // method a is invoked

方法链

当方法的返回值是一个对象,这个对象还可以调用其他方法,这种方法调用序列成为链或者级联,每次调用结果都是另一个表达式的一部分.

当方法没有返回值时,最好直接返回this,这种设计可以进行链式调用的风格编程.

point.setX(x).setY(y).setZ(z) //给三位空间的一个点设计坐标

不要将方法的链式调用和构造函数的链式调用混淆.

如果方法中有嵌套函数,嵌套函数不能从这个方法中访问this,嵌套函数的this还是全局对象.如果需要访问对象,在方法中使用一个变量存储this,再在嵌套函数中使用这个变量.

var o ={
    m:function(){
        var self = this //将this保存到变量中
        console.log(this === o) //true 方法中this即为对象
        f()
        function f(){
            console.log(this === o) //false 嵌套函数中,this不是当前对象
            console.log(self === o) //true
        }
    }
}

构造函数

如果函数调用前有关机子new,它就构成构造函数的调用.构造函数调用和普通调用在实参处理 调用上下文和返回值方面都不同

  • 没有参数可以省略括号var o = new Object
  • 构造函数会新创建一个对象并以这个对象作为其上下文,可以使用this引用这个新创建的对象
  • 构造函数一般没有return, 构造函数会隐式返回这个新对象的值.

间接调用

在javascript中, 函数也是对象, 它也有自己的方法. 其中的call()和apply()可以用来间接调用函数.

相关文章

  • Javascript学习笔记——8.2 函数调用

    函数内的代码在定义时并不会执行,只有在调用时才会执行. 有四种方法可以调用函数: 作为函数 作为方法 作为构造函数...

  • JavaScript学习笔记-3(函数)

    JavaScript学习笔记-(函数) 函数 1.函数的定义和调用 1. (x)括号内列出函数的参数,多个参数以,...

  • js高级(三)

    JavaScript高级第03天笔记 1.函数的定义和调用 1.1函数的定义方式 方式1 函数声明方式 funct...

  • JavaScript闭包学习笔记

    @(JS技巧)[闭包] JavaScript闭包学习笔记 什么是闭包? 有些情况下,函数调用完成之后,其执行上下文...

  • 自己的笔记

    javascript学习2017-02-28 1.this: this在函数(方法)内部,调用该函数(方法)对象...

  • JavaScript作用域学习笔记

    @(JS技巧)[JavaScript, 作用域] JavaScript作用域学习笔记 概念: 作用域就是变量与函数...

  • Javascript调用栈与尾递归实现

    JavaScript函数调用栈 理解JavaScript的函数调用栈是非常重要的。它可以让我们知道Javscrip...

  • 前端之路——函数调用方式

    JavaScript中函数调用的方式 作为普通函数调用function foo(){ console.log("...

  • js 基础

    JavaScript 函数 是对象 函数提升 提升作用域 在声明前调用。 自调用 (不能自调用声明的函数) 表达...

  • 谈谈JS中的 this

    想知道JavaScript 函数中的 this 指向,就得知道我们的函数什么时候被调用。 普通函数调用分为直接调用...

网友评论

      本文标题:Javascript学习笔记——8.2 函数调用

      本文链接:https://www.haomeiwen.com/subject/sjgdeftx.html