JavaScript общие объекты несколько способов создания: конструктор Object, Object буквального шаблон, шаблона растений, пользовательский режим конструктора, а также прототип комбинированного режима конструктора, каждый из них имеют свои преимущества и недостатки и сценарии использования.
1. Объект конструктор Модель
- Сценарии использования: начальные неопределенные данные в пределах объекта.
- Минусы: Слишком много заявлений
var p = new Object()
p.name = 'tom'
p.age = 12
p.steName = function (name) {
this.name = name
}
2. Режим литерал объекта
- Сценарии применения: объект данных, определенные в начале.
- Минусы: При создании нескольких объектов, дублировать код.
var p = {
name: 'jack',
age: 13,
setName: function (name) {
this.name = name
}
}
3. Завод шаблон
- Сценарий применения: необходимость создания нескольких объектов.
- Минусы: объект не имеет определенного типа типа объекта.
function createPerson (name,age) { //返回一个对象的函数就是工厂函数
var obj = {
name: name,
age: age,
sstName: function (name) {
this.name = name
}
}
return obj
}
4. Нестандартная модель конструктора
- Сценарии использования: необходимость создания нескольких типов объектов, идентифицированных.
- Недостатки: Каждый объект имеет одни и те же данные (метод), трата памяти.
function Person (name,age) {
this.name = name
this.age = age
this.setName = function (name) {
this.name = name
}
}
var p1 = new Person('tom',15)
var p2 = new Person('jack',14)
console.log(p1 instanceof Person) //true p1是Person类型
function student (name,grade) {
this.name = name
this.grade = grade
}
var s1 = new student('peter',6)
console.log(s1 instanceof student) //true s1是student类型
console.log(p1,p2)
p1 и p2 имеют каждый имеет метод же SetName (), в результате чего отходы памяти.
Прототип модели конструктора +
- Сценарии использования: Для создания нескольких типов объектов, определенных
function Person (name,age) {
this.name = name
this.age = age
}
Person.prototype.setName = function (name) {
this.name = name
}
var p1 = new Person('tom',12)
var p2 = new Person('jack',13)
console.log(p1,p2)
Метод объекта помещается на верхней части прототипа избегая впустую памяти.