以下是“JavaScript 面向对象入门精简篇”的完整攻略:
什么是面向对象编程(OOP)
面向对象编程是一种编程范式,主要思想是将一些数据和对这些数据的操作封装在一起,形成一个对象,对象则是面向对象程序的基本单位,用于实现数据的组织和代码的重用。
JavaScript 是一种面向对象编程语言,其中的数据可以是任意类型的值(简单类型、对象类型),JS 中的函数中通常也是用于处理这些数据。
创建对象
在 JavaScript 中,有多种创建对象的方式,本文中介绍两种:工厂模式和构造函数模式。
工厂模式
工厂模式是一种创建对象的模式,它没有使用类,而是封装了一个用于创建特定类型对象的函数,并返回的一个对象,这个函数就是工厂:
function createPerson(name, age) {
var obj = {};
obj.name = name;
obj.age = age;
obj.sayHello = function() {
console.log("Hello, my name is " + name + " and I am " + age + " years old.");
};
return obj;
}
var p1 = createPerson("John", 20);
p1.sayHello(); // 输出 "Hello, my name is John and I am 20 years old."
构造函数模式
构造函数模式使用 new
关键字,以构造函数的形式来创建对象:
function Person(name, age) {
this.name = name;
this.age = age;
this.sayHello = function() {
console.log("Hello, my name is " + name + " and I am " + age + " years old.");
};
}
var p1 = new Person("John", 20);
p1.sayHello(); // 输出 "Hello, my name is John and I am 20 years old."
原型和原型链
JavaScript 的对象有个私有属性 [[Prototype]]
,它指向该对象的原型(即该对象从哪个对象继承属性),原型对象有自己的原型,这样就组成了原型链。对象可以通过 __proto__
属性来访问它的原型对象。
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHello = function() {
console.log("Hello, my name is " + this.name + " and I am " + this.age + " years old.");
};
var p1 = new Person("John", 20);
p1.sayHello(); // 输出 "Hello, my name is John and I am 20 years old."
继承
JavaScript 中的继承是通过原型链来实现的,可以使用 Object.create()
来创建一个新对象,并将其原型设置为现有对象:
function Animal(name) {
this.name = name;
}
Animal.prototype.sayHi = function() {
console.log("Hi, I am " + this.name + ".");
};
function Dog(name, breed) {
Animal.call(this, name);
this.breed = breed;
}
Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;
Dog.prototype.sayBreed = function() {
console.log("My breed is " + this.breed + ".");
};
var d = new Dog("Max", "Labrador");
d.sayHi(); // 输出 "Hi, I am Max."
d.sayBreed(); // 输出 "My breed is Labrador."
以上就是“JavaScript 面向对象入门精简篇”的完整攻略,其中包括了几个示例用来帮助理解,希望对你有帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript 面向对象入门精简篇 - Python技术站