function Person(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 person = Person("Greg", 27, "Doctor"); person.sayName();// Greg 工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题(即不能知道一个对象的类型)
function Person(name, age, job){ this.name = name; this.age = age; this.job = job; this.sayName = function(){ alert(this.name); }; } var person = new Person("Greg", 27, "Doctor"); person.sayName();// Greg 构造函数始终都应该以一个大写字母开头,而非构造函数则应该以一个小写字母开头
function Person(){ } Person.prototype.name = "Nicholas"; Person.prototype.age = 29; Person.prototype.job = "Software Engineer"; Person.prototype.sayName = function(){ alert(this.name); }; var person = new Person(); person.sayName();//Nicholas 对于原型模式理解就是,每个函数都有一个 prototype(原型)属性,这个属性是一个指针,指向一个对象, 而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。
var person = new Object(); person.name = "Nicholas"; person.age = 29; person.job = "Software Engineer"; person.sayName = function(){ alert(this.name); }; person.sayName();//Software Engineer
var person = { name: "Nicholas", age: 29, job: "Software Engineer", sayName: function(){ alert(this.name); } }; person.sayName();//Nicholas
class Person{ constructor(name,age){ this.name = name; this.age = age; } sayName(){ alert(this.name) } }; var person = new Person('Nicholas'); person.sayName();//Nicholas