函数和构造函数
一、函数
函数使用function关键字来定义,可以用在函数定义表达式或函数声明语句中。
函数调用的4种方法:
1、作为函数;
1 // 这是一个普通函数 2 function range() { } 3 // 函数表达式 4 var range = function () { } 5 6 // 调用 7 range()
2、作为构造函数(看构造函数部分);
3、作为方法;
1 var o = { 2 add: function () { } 3 }; 4 o.add();
4、通过call() 、apply()间接调用;,
2 var o = {}; 3 // 要想以对象o的方法来调用函数f(),可以下面的写法 4 f.call(o); 5 f.apply(o);
二、构造函数
构造函数其实就是一个使用 new 操作符调用的函数。
当使用 new 调用时,构造函数内用到的 this 对象会指向新创建的对象实例。 不使用 new 进行调用,和普通函数没有区别。
构造函数与其他函数唯一的区别就是调用方式的不同。在《JavaScript高级程序设计》中个有这样一句话:任何函数,只要通过 new操作符来调用,那他就可以作为构造函数。
特点:
1、构造函数首字母大写,普通函数首字母小写(约定成俗);
1 // 这是一个构造函数 2 function Range() { } 3 // 这是一个普通函数 4 function range() { }
2、使用关键字 new 调用;
// 这是一个构造函数 function Range() { } // 调用 var o = new Range();
3、通常不使用return关键字;
3.1、如果构造函数显示的使用return语句返回一个对象,那么调用表达式的值就是这个对象;
1 // 这是一个构造函数 2 function Range() { 3 return {} 4 } 5 // 调用 6 var o = new Range(); 7 console.log(o)
浏览器控制台打印结果:
3.2、如果使用return语句但没有指定返回值,或返回一个原始值,就可以忽略这个返回值,同时使用这个新对象作为调用结果。
1 // 这是一个构造函数 2 function Range() { 3 return 4 } 5 // 调用 6 var o = new Range(); 7 console.log(o)
浏览器控制台打印结果:
4、this指向自己;
1 // 这是一个普通函数 2 function range() { 3 console.log(this); // 打印window 4 } 5 // 调用 6 range() 7 8 // 这是一个构造函数 9 function Range() { 10 console.log(this);// 打印Range() 11 } 12 // 调用 13 var o = new Range();
浏览器控制台打印结果:
好好做人,认真生活。