1.创建对象
1.1 创建Object的新实例
let p1 = new Object()
p1.name = 'lili'
p1.sayName = function () { console.log(this.name) }
1.2 对象字面量
let p1 = {
name : 'lili',
sayName() {
console.log(this.name)
}
}
1.3 工厂模式
function createPerson(name,age) {\
let p1 = new Object()\
p1.name = name\
p1.age = age\
p1.sayname = function (){\
console.log(this.name)\
}\
return p1\
}
优点:可以解决创建多个类似对象的问题
缺点:没有解决对象标识问题(即新创建的对象是什么类型)
1.4 构造函数模式
function Person(name,age) {\
this.name = name\
this.age = age\
this.sayname = function (){\
console.log(this.name)\
}\
}\
let p1 = new Person('lili',18)
没有显示的创建对象
属性和方法直接赋值给this
没有return
优点:解决对象标识问题(即新创建的对象是什么类型)
console.log( p1 instanceof Person) // true
缺点:多个实例对象的同名方法不是一个Function实例
解决:
1.把函数定义在构造函数外面--缺点:混乱全局作用域
2.原型模式
1.5 原型模式
优点:在原型对象上定义的属性和方法可以被对象实例共享