编程爱好者之家
function creatPerson(name, age) { var obj = new Object(); obj.name = name; obj.age = age; obj.sayName = function() { window.alert(this.name); }; return obj; }
function Person(name, age) { this.name = name; this.age = age; this.sayName = function() { window.alert(this.name); }; }
function Person() { } Person.prototype = { constructor : Person, name : "Ning", age : "23", sayName : function() { window.alert(this.name); } };
大家可以看到这种方法有缺陷,类里属性的值都是在原型里给定的。
function Person(name, age) { this.name = name; this.age = age; } Person.prototype = { constructor : Person, sayName : function() { window.alert(this.name); } };
将构造函数方法和原型方法结合使用是目前最常用的定义类的方法。这种方法的好处是实现了属性定义和方法定义的分离。比如我可以创建两个对象person1
和person2
,它们分别传入各自的name
值和age
值,但sayName()
方法可以同时使用原型里定义的。