本帖最后由 王卓凡 于 2023-6-13 18:12 编辑
面向对象对象的创建方式工厂模式function createUser(uname, uage) {
var user = new Object()
user.uname = uname
user.uage = uage
user.show = function () {
console.log(this.uname + " " + this.uage)
}
return user
}
var u1 = createUser('张三', 12)
u1.show()
var u2 = createUser('李四', 15)
u2.show()
构造函数(constructor)ES6之前没有类的概念。 构造函数类似是一个模板,使用这个模板创建具体的对象。 成员: 1.实例成员:只有实例化的对象才能使用 2.静态成员:只有构造函数才能使用 function User(uname, uage) {
this.uname = uname
this.uage = uage
this.show = function () {
console.log(this.uname + " " + this.uage)
}
}
var u1 = new User('张三', 10)
u1.show()
var u2 = new User('李四', 20)
u2.show()
// instanceof运算符返回一个布尔值,表示对象是否为某个构造函数的实例
console.log(u1 instanceof User) //true
console.log(u1 instanceof Dog) //false
console.log(u1.show === u2.show) //false,存在浪费内存的问题
关键字new 在代码执行经历的过程: 1.在内存中创建一个空的对象 - {} 2.确定this指向,指向这个空对象 3.构造函数内部代码的执行,给这个空对象添加属性和方法 4.返回这个新的对象 - 内部自动执行return
原型对象每个构造函数都有一个原型对象(prototype),它指向另一个对象。我们一般会把构造函数的属性写在构造函数内部,公共的方法写在原型对象上,这样所有的实例对象就可以共享这些方法。 这样能更好的节约内存,提高代码的效率。
|