JavaScript学习笔记(二十三)函数(三)
函数属性与方法
- 每个函数都有两个属性:length和prototype。
- length 属性保存函数定义的命名参数的个数。
1 | function sayName(name) { |
- prototype是保存引用类型所有实例方法的地方,这意味着toString()、valueOf ()等方法实际上都保存在prototype. 上,进而由所有实例共享。
- prototype属性是不可枚举的。
- 函数还有两个方法: apply()和call(),这两个方法都会以指定的this值来调用函数。
- apply()方法接收两个参数:函数内this的值和一个参数数组第二个参数可以是Array的实例,但也可以是arguments对象。
1 | function sum(num1, num2) { |
- call()方法与apply()的作用一样,call()向函数传参时,必须将参数一个一个地列出来。
1 | function sum(num1, num2) { |
- 使用call ()或apply()的好处是可以将任意对象设置为任意函数的作用域。
1 | window.color = 'red'; |
- 继承的方法toLocalestring()和tostring()始终返回函数的代码。
- valueOf()返回函数本身。
函数表达式
- 函数声明的关键特点是函数声明提升。
- 定义函数有两种方式:函数声明和函数表达式
1 | function functionName(arg0, arg1, arg2) { |
- 函数表达式看起来就像一个普通的变量定义和赋值,即创建一个函数再把它赋值给一个变量functionName这样创建的函数叫作匿名函数。
- 未赋值给其他变量的匿名函数的name属性是空字符串。
- 只要函数被当作值来使用,它就是一个函数表达式。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 姚永坤的小窝!
评论