目录
3.工厂函数创建对象 (可以根据需要传不同参数 创建多个对象)
4.自定义构造函数创建对象 (通过new关键字简化步骤和代码 和工厂函数作用相同)
通过 对象.属性 或者 对象.方法() 获取对象里面的属性和方法
1.字面量创建对象 (每个对象都是独立的)用于创建单个对象
// 字面量创建对象
var obj = {
name: "张三",
age: 20,
sty() {
console.log(this.name + "爱睡觉");
}
}
obj.sty()
2.内置构造函数创建对象
// 内置构造函数创建对象
var obj1 = new Object()
obj1.name = "小白"
obj.fn = function () {
console.log("内置构造函数创建对象");
}
console.log(obj1.name);
obj1.fn()
3.工厂函数创建对象 (可以根据需要传不同参数 创建多个对象)
// 工厂函数 通过改变参数多次使用
function fun(name, age, gender) {
var obj = new Object()
obj.name = name
obj.age = age
obj.gender = gender
// 返回一个对象 创建的就是对象类型+
return obj
}
var p1 = fun("张三", 20, "男")
var p2 = fun("李四", 30, "女")
console.log(p1, p2);
console.log(typeof (p1));
4.自定义构造函数创建对象 (通过new关键字简化步骤和代码 和工厂函数作用相同)
// 自定义构造函数 首字母大写
function Preson(name, age, gender) {
this.name = name
this.age = age
this.gender = gender
}
// new关键字
// 1. 创建一个空对象 var obj=new Object()
// 2. 把对象赋值给this this=obj (函数里面的this指向window)
// 3. 通过this添加属性和方法 this.xx=xx
// 4. 返回this (当前对象) return this
// 创建对象的时候必须使用new
var p3 = new Preson("小黑", 10, "男")
5.class类创建对象 (代码结构清晰)
// 类 Person
class Person {
// 构造函数
constructor(name, age) {
// 实例成员
this.name = name
this.age = age
}
// 原型成员
eat() {
console.log(this.name + "爱睡觉");
}
// 静态成员
static shows() {
// 静态成员this指向构造函数Person
console.log(this.name + "爱吃饭");
}
}
// 实例化
var p = new Person("小白", 10)
console.log(p);
p.eat()
//静态成员只能通过构造函数调用
Person.shows()