js 学习 -- 05

引用类型(Function)

  1. Function 函数

    function sum(num1, num2) {
    return num1 + num2;
    }

没有重载
function addSomeNumber(num) {
    return num + 100;
}

function addSomeNumber(num) {
    return num + 200;
}

var result = addSomeNumber(100);    // 300

后面的函数会覆盖前面的函数~~~~

作为值的函数

js 中函数名本身就是变量,所以函数可以当作值来使用:

function callSomeFunction(someFunction, someArgument) {
    return semeFunction(someArgument);
}

function add10(num){
    return num + 10;
}

var result = callSomeFunction(add10, 10); // 20

访问函数指针但不执行函数方法时去掉后面的括号。

函数内部属性

函数内部有两个特殊的对象:arguments 和 this

arguments: 它是一个类数组对象,包含着传入函数中的所有参数。这个对象还有一个 callee 的属性,该属性是一个指针,指向拥有这个 arguments 对象的函数。

function factorial(num) {
    if (num <= 1) {
        return 1;
    } else {
        return num * factorial(num - 1);
    }
}

等同于:

function factorial(num) {
    if (num <= 1) {
        return 1;
    } else {
        return num * arguments.callee(num - 1);
    }
}

this:类似于java 中的 this,引用的是函数据以执行的环境变量

window.color = "red";
var o = { color : "blue"};

function sayColor() {
    alert(this.color);
}

sayColor(); // red

o.sayColor = sayColor;
o.sayColor(); // blue
函数属性和方法

函数就是对象,所以也是有属性和方法的,每个函数都包含 length 和 prototype

length:函数希望接收的命名参数的个数
protorype:后面单独介绍

每个函数都包含两个非继承而来的方法:apply() 和 call() 这两个方法的用途都是在特定的作用域里调用函数,apply()接受两个参数,一个是运行的使用域,别一个是参数数组,call() 传递给函数的参数必须逐个列举出来:

function sum(num1, num2) {
    return num1 + num2;
}

function applySum(num1, num2) {
    return sum.apply(this, arguments);
}

function applySum2(num1, num2) {
    return sum.apply(this, [num1, num2]);
}

function callSum(num1, num2) {
    return sum.call(this, num1, num2);
}

ECMAScript 还定义了一个方法:bind(),这个方法会创建一个函数的实例,其中this值会被绑定到传给bind()函数的值。

window.color = "red";
var o = { color : "blue"};

function sayColor() {
    alert(this.color);
}

sayColor(); // red

var objectSayColor = sayColor.bind(o);
objectSayColor(); // blue

哈哈这里解决了上篇 RN 文章留下 的问题 _

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容