JavaScript对象总结:面向对象、原型链、继承
2023-09-29 09:41:48
JavaScript对象总结:面向对象、原型链、继承
JavaScript 是一种基于对象的编程语言,这表明它可以基于对象的集合。该语言具有创建对象和操作对象的内置功能。
1.面向对象
面向对象编程是一种编程范式,它将对象作为基本组成单元。对象是一种数据类型,可以存储数据并具有执行操作的功能。对象可以包含其他对象,并且可以相互交互。
在JavaScript中,对象通常使用花括号定义。例如:
const person = {
name: "John Doe",
age: 30,
greet: function() {
console.log("Hello, my name is " + this.name);
}
};
在这个例子中,person
是一个对象。它包含三个属性:name
、age
和greet
。name
和age
是字符串,而greet
是一个函数。
2.原型链
JavaScript中,每个对象都有一个原型对象。原型对象是另一个对象,它包含该对象的所有属性和方法。当对象访问一个属性或方法时,它首先会在自身中查找。如果找不到,它就会在原型对象中查找。依此类推,一直到找到该属性或方法。
例如,在上面的例子中,person
对象的原型对象是Object.prototype
。Object.prototype
包含所有JavaScript对象共有的一些属性和方法,例如toString()
和valueOf()
。
3.继承
继承是一种将一个对象的所有属性和方法传递给另一个对象的机制。在JavaScript中,继承是通过原型链实现的。
例如,我们可以创建一个新的对象student
,它继承自person
对象。我们可以这样做:
const student = Object.create(person);
现在,student
对象将具有person
对象的所有属性和方法。我们还可以向student
对象添加新的属性和方法。例如:
student.major = "Computer Science";
student.study = function() {
console.log("I am studying.");
};
现在,student
对象具有person
对象的所有属性和方法,以及它自己的属性和方法。
4.构造函数
构造函数是一种特殊的函数,它用于创建对象。构造函数的名称以大写字母开头。例如:
function Person(name, age) {
this.name = name;
this.age = age;
this.greet = function() {
console.log("Hello, my name is " + this.name);
};
}
要使用构造函数创建对象,我们可以这样做:
const person = new Person("John Doe", 30);
现在,person
对象将具有Person
构造函数的所有属性和方法。
5.原型
原型是对象的一个特殊属性,它指向该对象的原型对象。我们可以使用__proto__
属性来访问原型。例如:
console.log(person.__proto__);
这将输出Person.prototype
。
6.私有属性和方法
在JavaScript中,没有真正的私有属性和方法。但是,我们可以使用一些技巧来模拟它们。
一种方法是使用闭包。例如:
const person = (function() {
let privateName = "John Doe";
let privateAge = 30;
return {
getName: function() {
return privateName;
},
setName: function(name) {
privateName = name;
},
getAge: function() {
return privateAge;
},
setAge: function(age) {
privateAge = age;
}
};
})();
在这个例子中,privateName
和privateAge
是私有属性,getName()
、setName()
、getAge()
和setAge()
是私有方法。
7.公有属性和方法
公有属性和方法是那些可以从对象外部访问的属性和方法。例如,在上面的例子中,name
、age
和greet()
都是公有属性和方法。
8.实例
实例是通过构造函数创建的对象。例如,在上面的例子中,person
对象是Person
构造函数的实例。
9.类
类是创建对象的模板。类包含构造函数、属性和方法。例如,在上面的例子中,Person
类包含构造函数、name
属性、age
属性和greet()
方法。
10.总结
JavaScript对象是基于对象的集合。它们可以包含属性和方法。对象可以相互交互。JavaScript中的继承是通过原型链实现的。构造函数用于创建对象。原型是对象的一个特殊属性,它指向该对象的原型对象。私有属性和方法可以使用闭包来模拟。公有属性和方法是可以从对象外部访问的属性和方法。实例是通过构造函数创建的对象。类是创建对象的模板。