javascript概念类比解析
- 将javascript中的相关概念类比于Python中的相关概念
对象 (Object)
JavaScript
定义:无序的数据集合,由键值对组成,使用对象字面量
{}
或构造函数创建。1
2
3
4const person = {
name: "Alice",
greet: function() { console.log("Hello!"); }
};
Python
定义:Python 中一切皆对象,包括基本类型(如整数、字符串)和自定义类型。
1
2
3
4person = {
"name": "Alice",
"greet": lambda: print("Hello!")
}
类比关系
- JavaScript 对象 ≈ Python 字典(
dict
)或自定义类的实例。
实例 (Instance)
JavaScript
定义:通过构造函数或类创建的对象。
1
2
3
4
5
6
7
8
9
10
11// 使用构造函数
function Person(name) {
this.name = name;
}
const alice = new Person("Alice"); // alice是Person的实例
// 使用类(ES6+)
class Animal {
constructor(name) { this.name = name; }
}
const dog = new Animal("Buddy"); // dog是Animal的实例
Python
定义:通过类创建的对象,使用
ClassName()
语法。1
2
3
4
5
6
7
8
9
10
11class Person:
def __init__(self, name):
self.name = name
alice = Person("Alice") # alice是Person的实例
class Animal:
def __init__(self, name):
self.name = name
dog = Animal("Buddy") # dog是Animal的实例
类比关系
- JavaScript 构造函数 / 类的实例 ≈ Python 类的实例。
函数 (Function)
JavaScript
定义:一等公民,可以作为参数传递、返回值或存储在变量中。
1
2function add(a, b) { return a + b; }
const multiply = (a, b) => a * b;
Python
定义:使用
def
关键字定义,同样是一等公民。1
2
3
4def add(a, b):
return a + b
multiply = lambda a, b: a * b # 匿名函数(等价于JS的箭头函数)
类比关系
- JavaScript 函数 ≈ Python 函数(普通函数或匿名函数)。
构造函数 (Constructor)
JavaScript
定义:用于创建对象的特殊函数,通过
new
关键字调用。1
2
3
4
5
6
7
8
9
10
11
12
13
14// 传统构造函数
function Car(make, model) {
this.make = make;
this.model = model;
}
const myCar = new Car("Toyota", "Corolla");
// ES6类(本质是语法糖)
class Rectangle {
constructor(width, height) {
this.width = width;
this.height = height;
}
}
Python
定义:类中的
__init__
方法,用于初始化对象属性。1
2
3
4
5
6
7
8
9
10
11class Car:
def __init__(self, make, model):
self.make = make
self.model = model
my_car = Car("Toyota", "Corolla") # 无需显式调用new
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
类比关系
- JavaScript 构造函数 ≈ Python 类的
__init__
方法(但 Python 需要通过类名调用,而非直接调用构造函数)。
关键区别总结
概念 | JavaScript | Python |
---|---|---|
对象创建 | {} 或 new Constructor() |
ClassName() 或 {} (字典) |
类语法 | class 关键字(ES6+) |
class 关键字 |
构造函数 | 函数本身或类的 constructor 方法 |
类的 __init__ 方法 |
继承 | 原型链或 extends 关键字 |
class Child(Parent) 语法 |
函数类型 | 函数是对象,可作为构造函数 | 函数是对象,但需通过类创建实例 |
总结
- JavaScript 的构造函数和类是创建对象的主要方式,实例通过
new
关键字生成。 - Python 通过类和
__init__
方法创建实例,无需new
关键字。 - 两者的函数和对象概念类似,但语法和实现细节有所不同。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Dedsec的博客!