字面量
var person = {
name: 'zwj',
age: 22
}
new Object
var people = new Object(
{
name: "zwj",
age: 22,
sex: "male"
}
);
带参构造函数
function Person(name, age) {
this.name = name;
this.age = age;
this.sayName = function () {
console.log(this.name);
};
}
var person = new Person('zwj', 22)
console.log(person);
person.sayName()
无参构造函数
/*
定义一个function
如果有new关键字去"实例化"
那么该function可以看作是一个类
*/
function Person() {
}
var person = new Person();
person.name = "zwj";
person.hobby = "sleeping";
person.work = function () {
console.log(this.name + "的爱好是" + this.hobby);
}
console.log(person);
person.work()
工厂模式
封装一个函数
内部调用new Object() 创建一个对象
为对象添加属性和方法
返回该对象
function creatPerson(name, age) {
var obj = new Object();
obj.name = name;
obj.age = age;
obj.sayName = function () {
console.log(this.name);
};
return obj;
}
let objOne = creatPerson('zwj', 22)
let objTwo = creatPerson('zs', 25)
console.log(objOne);
console.log(objTwo);
构造函数和原型对象结合
实例化不同的实例对象 分别传入各自的属性 共同调用原型里面的方法
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype = {
constructor: Person,
sayName: function () {
console.log(this.name);
}
};
var person = new Person('zwj', 22)
var persons = new Person('lisi', 33)
console.log(person);
console.log(persons);