JavaScript面向对象:自定义对象与函数表现形式解析
需积分: 0 62 浏览量
更新于2024-07-13
收藏 478KB PPT 举报
"JavaScript自定义对象与扩展"
在JavaScript中,函数是一种特殊的数据类型,可以作为值传递,也可以作为对象的属性。标题提到的几种函数创建方式,实际上展示了JavaScript的灵活性。下面我们将深入探讨这些创建函数的方法以及JavaScript的面向对象特性。
1. 函数声明:
```javascript
function func1(a, b) { alert(a + b); }
```
这是最传统的函数声明方式,通过`function`关键字定义了一个名为`func1`的函数。
2. 函数表达式:
```javascript
var func2 = function(a, b) { alert(a + b); }
```
这是一种函数表达式,匿名函数被赋值给变量`func2`。函数表达式可以延迟执行,而函数声明会立即执行。
3. 自定义函数名的函数表达式:
```javascript
var func3 = function func4(a, b) { alert(a + b); }
```
这种方式看起来像是函数声明,但实际上是函数表达式,因为函数名`func4`仅存在于该表达式内部。
4. `Function`构造器:
```javascript
var func5 = new Function("a", "b", "alert(a+b)");
```
通过`Function`构造器可以动态创建函数,这里的参数分别是函数的参数和函数体。
5. 对象字面量:
```javascript
var fun6 = {}; // 创建一个空对象
```
对象字面量通常用来创建具有属性的对象,但如果不需要实例化,可以作为构造函数使用。这里`fun6`是一个空的匿名构造函数,不是一个真正的函数。
6. 初始化对象属性:
```javascript
var fun6 = {a: 1, b: 2};
```
这里`fun6`是一个具有属性`a`和`b`的对象,而不是函数。
在JavaScript中,面向对象编程是基于原型的,不同于Java和C#的类为基础的编程。这意味着我们不需要先定义一个类,然后实例化它。JavaScript的面向对象特性主要包括:
1. 构造函数:
```javascript
function Person(name) {
this.name = name;
}
```
构造函数用于创建特定类型的对象,`this`关键字用于引用新创建的对象。
2. 原型链:
每个JavaScript对象都有一个`__proto__`属性,指向创建该对象的构造函数的原型。通过原型,我们可以实现继承和共享属性。
3. 原型对象:
```javascript
Person.prototype.sayName = function() {
console.log(this.name);
}
```
通过`prototype`,我们可以为所有`Person`对象添加方法。
4. 新建实例:
```javascript
var person1 = new Person('张三');
console.log(person1.name); // 输出 '张三'
person1.sayName(); // 输出 '张三'
```
`new`关键字用于创建构造函数的新实例。
5. 动态扩展:
JavaScript允许我们在对象创建后随时添加新的属性或方法,这体现了其灵活性。
总结来说,JavaScript提供了多种创建和使用函数的方式,同时其面向对象机制基于原型,允许开发者灵活地创建和扩展对象。理解这些概念对于深入学习JavaScript至关重要。
2021-10-03 上传
1363 浏览量
3241 浏览量
2172 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
杜浩明
- 粉丝: 14
- 资源: 2万+
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析