以下是“JS创建对象的四种方式”的完整攻略:
对象字面量是一种最简单的对象创建方式,就是直接在代码中书写一个对象。具体格式如下:
let obj = {
key1: 'value1',
key2: 'value2',
key3: function() {
console.log('this is a method');
}
}
其中,对象中的属性值可以是任意类型,甚至是函数。可以通过 '.' 或 '['']' 访问对象中的属性和方法。
obj.key1; // 'value1'
obj['key2']; // 'value2'
obj.key3(); // 'this is a method'
构造函数模式指的是使用构造函数来创建对象,通过创建实例对象来创建新的对象。具体格式如下:
function Person(name, age) {
this.name = name;
this.age = age;
this.sayName = function() {
console.log(this.name);
}
}
let p1 = new Person('Jack', 26);
let p2 = new Person('Tom', 25);
其中,Person
就是一个构造函数,然后通过 new
操作符来创建实例。这里的 this
指向的是每个实例对象本身。
原型模式指的是共享一个原型对象,所有实例对象共享该原型对象上的属性和方法。具体格式如下:
function Person() {}
Person.prototype.name = 'Jack';
Person.prototype.age = 26;
Person.prototype.sayName = function() {
console.log(this.name);
}
let p1 = new Person();
let p2 = new Person();
p1.sayName(); // 'Jack'
p2.sayName(); // 'Jack'
其中,Person
就是一个构造函数,Person.prototype
是一个原型对象,可以向其中添加属性和方法,然后通过 new
操作符来创建实例。这里的 this
指向的是该实例对象本身,在实例找不到对应属性或方法时,它会到该实例的原型对象上找。
组合模式是原型模式和构造函数模式的组合,既可以共享原型对象的属性和方法,也可以给每个实例对象添加自己的属性和方法。具体格式如下:
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayName = function() {
console.log(this.name);
}
let p1 = new Person('Jack', 26);
let p2 = new Person('Tom', 25);
在这里,我们既在构造函数中给实例对象添加了属性和方法,又在原型对象上添加了属性和方法,既可以让每个实例对象的属性和方法独立,又可以共享实例对象的属性和方法。
至此,我们完成了“JS创建对象的四种方式”的完整攻略。
本文链接:http://task.lmcjl.com/news/11573.html