菁英数字科技(猩码)-猩码学苑-专注软件开发人才菁英教育

标题: 前端-王卓凡-20230524 [打印本页]

作者: 王卓凡    时间: 2023-6-13 18:10
标题: 前端-王卓凡-20230524
本帖最后由 王卓凡 于 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),它指向另一个对象。我们一般会把构造函数的属性写在构造函数内部,公共的方法写在原型对象上,这样所有的实例对象就可以共享这些方法。
这样能更好的节约内存,提高代码的效率。






欢迎光临 菁英数字科技(猩码)-猩码学苑-专注软件开发人才菁英教育 (http://www.xingmaxueyuan.com/) Powered by Discuz! X3.4