Fork me on GitHub

函数和构造函数

一、函数

函数使用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();

浏览器控制台打印结果:

 

posted @ 2022-01-13 17:12  元芳啊  阅读(281)  评论(0编辑  收藏  举报