出自:https://blog.csdn.net/xiaowu_hhb/article/details/52789683
1、创建函数
JavaScript 中需要创建函数的话,有两种方法:函数声明、函数表达式,各自写法如下:
第一种:
- function fn() {};
- var fn = function () {};
- var fn = "{name:'color red'}";
- var obj = new Function("return"+fn)();
- alert(obj.name);//color red
2、函数的调用
js的函数调用会免费奉送两个而外的参数就是 this 和 arguments。arguments是参数组,他并不是一个真实的数组,但是可以使用.length方法获得长度。
- 方法调用模式
- 函数调用模式
- 构造器调用模式
- apply调用模式
- var obj={
- value:0,
- inc:function () {
- alert(this.value);//this指obj
- }
- }
- obj.inc();
- var add = function(a, b) {
- alert(this) >//this被绑顶到window
- return a + b;
- }
- var sum = add(3, 4);
- alert(sum);
- var quo = function(string) {
- this.status = string;
- }
- quo.prototype.get_status = function() {
- return this.status;
- }
- var qq = new quo("aaa");
- alert(qq.get_status());
(4)apply调用模式
函数的apply方法,如同该对象拥有此方法,使该对象拥有此方法。此时this指向该对象。
apply接收两个参数,第一个是要绑定的对象(this指向的对象),第二个是参数数组。
- function MyObject(name) {
- this.name = name || 'MyObject';
- this.value = 0;
- this.increment = function(num) {
- this.value += typeof(num) === 'number' ? num : 0;
- };
- this.toString = function() {
- return '[Object:' + this.name + ' {value:' + this.value + '}]';
- }
- this.target = this;
- }
- function getInfo() {
- return this.toString();
- }
- var myObj = new MyObject();
- alert(getInfo.apply(myObj)); //[Object:MyObject {value:0}],this指向myObj
- alert(getInfo.apply(window)); //[object Window],this指向window
3、函数的参数
参数用于将数据传递到函数内部。当然,如果不用参数传递,在函数内部也可以访问外部的变量,那为什么还要参数呢?
1.封装:有了参数,函数内部就不用关心外部的东西,只负责自己处理自己的东西即可。
2.如果你使用参数,那么你在函数内部修改了参数的值,外部的值就不会受到影响,如果你直接操作函数外部的值,那可就危险了。(当然,不是所有参数的修改都不会被影响,如果是引用传递,那么外部的值会同时改变)。
- function fn1() {
- alert("hello");
- }
- function fn2(str) {
- str=2;
- return str;
- }
- alert(fn2());