1.函数
在之前已经初步了解了JS中一般函数是如何使用的,与C语言并无太大的区别。
示例:
1 2 3
| function myFunction(a, b) { return a * b; }
|
有所不同的是,JS中是可以用一个表达式来表示一个函数的,函数表达式可以存储在变量中:
1 2
| var x = function (a, b) {return a * b}; var z = x(4, 3);
|
- 自调用函数
如果表达式后面紧跟 () ,则会自动调用。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ustc</title> </head> <body>
<p>函数可以自动调用:</p> <p id="demo"></p> <script> (function () { document.getElementById("demo").innerHTML = "Hello! 你的GPA是4.3"; })();
</script>
</body> </html>
|
- 箭头函数
ES6 新增了箭头函数。箭头函数表达式的语法比普通函数表达式更简洁。
1 2 3 4 5 6 7 8 9
| let sum = function(a, b) { return a + b; }
let sum1 = (a, b) => { return a + b; }
|
由此得到箭头函数的一般形式:(参数) => { 函数体 }
其他的一些箭头函数用法:
1.在参数只有一个的时候是可以省略小括号的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| let function = (x) => { return x; };
let function = x => { return x; };
let function = () => { return true; };
let function = (a, b) => { return a * b; };
|
2.在箭头函数只有一行代码时可以省略大括号,并且会自动return这条语句的返回值
1 2 3 4 5 6 7 8 9
| let function = (a, b) => { return a + b; };
let function = (a, b) => a + b;
let function = (a, b) => return a + b;
|
- 函数参数
JavaScript 函数对参数的值没有进行任何的检查。若函数有两个参数,而传参时只传入了一个参数,另一个参数会自动设为undefined。ES6 支持函数带有默认参数
1 2 3 4 5 6 7
| function myFunction(x, y = 10) { return x + y; } myFunction(0, 2) myFunction(5);
|
- arguments 对象
JavaScript 函数有个内置的对象 arguments 对象。argument 对象包含了函数调用的参数数组。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
x = findMax(1, 123, 500, 115, 44, 88); function findMax() { var i, max = arguments[0]; if(arguments.length < 2) return max; for (i = 0; i < arguments.length; i++) { if (arguments[i] > max) { max = arguments[i]; } } return max; }
|
2.类
我们使用 class 关键字来创建一个类,类体在一对大括号 {} 中,我们可以在大括号 {} 中定义类成员的位置,如方法或构造函数。
每个类中包含了一个特殊的方法 constructor(),它是类的构造函数,这种方法用于创建和初始化一个由 class 创建的对象。
创建一个类的语法格式如下:
1 2 3 4 5 6 7 8 9 10 11
| class ClassName { constructor() { ... } }
class test{ constructor(name, url) { this.name = name; this.url = url; } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| class GPA{ constructor(name, grade) { this.name = name; this.grade= grade; } age() { let gpa if(this.grade>95) gpa = 4.3 else gpa = 4. 0 return gpa } } let gpa= new GPA("占一", 99); document.getElementById("demo").innerHTML = "占一的GPA: " + gpa.age() ;
|
- 类的继承
JavaScript 类继承使用 extends 关键字。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类(父类),新建的类称为派生类(子类)。super() 方法用于调用父类的构造函数
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| class father{ constructor(grade) { this.grade = grade; } GET_GPA() { let gpa if(this.grade>90) gpa=4.3 else gpa=4.0 return gpa } } class child extends father{ constructor(name, grade) { super(grade); this.name= name; } show() { return this.name+'的GPA:'+this.GET_GPA(); } } let noob = new child ("占一", 99); document.getElementById("demo").innerHTML = noob.show();
|
- getter 和 setter
类中我们可以使用 getter 和 setter 来获取和设置值。类中添加 getter 和 setter 使用的是 get 和 set 关键字。很多开发者在属性名称前使用下划线字符 _ 将 getter/setter 与实际属性分开,
实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class GPA{ constructor(grade) { this._sitegrade = grade; } get sitegpa() { return this._sitegrade ; } set sitegpa(x) { this._sitegrade = x; } } let noob = new GPA(4.3); document.getElementById("demo").innerHTML = noob.sitegpa; noob.sitegpa=4.31 document.getElementById("demo").innerHTML = noob.sitegpa;
|
- 静态方法
静态方法是使用 static 关键字修饰的方法,又叫类方法,属于类的,但不属于对象。静态方法不能在对象上调用,只能在类中调用。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class GPA{ constructor(grade) { this.grade= grade; } static good() { return 4.3; } } let zhanyi = new GPA(99);
document.getElementById("demo").innerHTML = GPA.good();
|