// 创建对象 工厂模式
function creatPerson(name,age,job) {
var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.sayName = function(){
alert(this.name);
};
return o;
}
var person1 = creatPerson('xr',22,'se');
var person2 = creatPerson('gg',33,'doctor');
// 构造函数模式 大写字母开头
// 不同之处:1.没有显示创造对象2.直接将属性方法赋给this对象3.无return
function Person(name,age,job) {
this.name = name;
this.age = age;
this.job = job;
this.sayName =sayName;
}
function sayName() {
alert(this.name);
}
var person1 = new Person('xr',22,'se');
// new操作符经历的四个步骤:
// 1.创建一个新对象;2.将构造函数的作用域赋给新对象,this指向了新对象
// 3.执行构造函数中的代码(为新对象添加属性);4.返回新对象
// 原型模式
// 不必在构造函数中定义对象实例的信息,而是将这些信息直接添加到原型对象中
function Person() {}
Person.prototype.name = 'cr';
Person.prototype.age = 22;
Person.prototype.job = 'se';
Person.prototype.sayName = function() {
alert(this.name);
};
var person1 = new Person();
person1.sayName();
function Person() {
}
Person.prototype(){
name : 'xr',
age = 22,
job = 'se',
sayName = function () {
alert(this.name);
}
};
// 先创建实例再修改原型也不想影响
var friend = new Person();
Person.prototype.sayHi = function () {
alert('hi');
};
friend.sayHi();
// 组合使用构造函数模式和原型模式
// 构造函数模式用于定义实例属性,原型模式用于定义方法和共享的属性
function Person(name,age,job) {
this.anme = name;
this.age = age;
this.job = job;
this.friend = ['ss','dd'];
}
Person.prototype = {
constructor : Person,
sayName : function(){
alert(this.name);
}
}
var person1 = new Person('boy',22,'se');
var person2 = new Person('hh',44,'doctor');
person1.friend.push('van');
JavaScript权威指南的笔记——构造函数
于 2022-02-25 16:22:55 首次发布