[基础]JavaScript中的面向对象(个人学习笔记) 二
有了第一篇的一些对对象的了解,后面学习如果来定义一个类也可以说成定义一个对象就会容易许多,废话就这么多了,继续开始学习。首先从定义对象的方式介绍。
1、工厂方式
当要定义一个名为“人”的类时,可以简单的设想我们需要为这个人设置属性:名字还有性别。可以简单地用一下代码实现:
var oPerson = new Object; oPerson.name = "yzl"; oPerson.sex = "female"; oPerson.sayInfo = function(){ alert("name : " + this.name + " ,sex :" + this.sex); };
function createPerson(){ var oPerson = new Object; oPerson.name = "yzl"; oPerson.sex = "female"; oPerson.sayInfo = function(){ alert(" name : " + this.name + " ,sex :" + this.sex); }; return oPerson; }; var p1 = createPerson(); p1.sayInfo(); p1.name = "gcm"; p1.sex = "female"; p1.sayInfo();
function createPerson(sName,sSex){var oPerson = new Object; oPerson.name = sName; oPerson.sex = sSex; oPerson.sayInfo = function(){alert("name : " + this.name + " ,sex :" + this.sex);};return oPerson;};var p1 = createPerson("yzl","male");var p2 = createPerson("gcm","female");p1.sayInfo();p2.sayInfo();
function sayInfo(){ alert("name : " + this.name + " ,sex :" + this.sex); } function createPerson(sName,sSex){ var oPerson = new Object; oPerson.name = sName; oPerson.sex = sSex; oPerson.sayInfo = sayInfo; return oPerson; }; var p1 = createPerson("yzl","male"); var p2 = createPerson("gcm","female"); p1.sayInfo(); p2.sayInfo();
function sayInfo(){ alert("name : " + this.name + " ,sex :" + this.sex); } function Person(sName,sSex){ this.name = sName; this.sex = sSex; this.sayInfo = sayInfo; } var p1 = new Person("yzl","male"); p1.sayInfo();
function Person(){ } Person.prototype.name = "yzl"; Person.prototype.sex = "male"; Person.prototype.sayInfo = function(){ alert("name : " + this.name + " ,sex :" + this.sex); }; var p1 = new Person(); p1.sayInfo(); p1.name = "gcm"; p1.sex = "female"; p1.sayInfo();
alert(p1 instanceof Person); //true
function Person(){ } Person.prototype.name = "yzl"; Person.prototype.sex = "male"; Person.prototype.friends = new Array("ymj","gcm"); Person.prototype.sayInfo = function(){ alert("name : " + this.name + " ,sex :" + this.sex); }; var p1 = new Person(); var p2 = new Person(); p1.friends.push("hl"); alert(p2.friends); // ymj gcm hl
function Person(sName,sSex){ this.name = sName; this.sex = sSex; this.friends = new Array(); } Person.prototype.makeFriend = function(newFriend){ this.friends.push(newFriend); } Person.prototype.sayInfo = function(){ alert("name : " + this.name + " ,sex :" + this.sex + ", and has friends :" + this.friends ); }; var p1 = new Person("yzl","male"); var p2 = new Person("gcm","female"); p1.makeFriend("zxt"); p2.makeFriend("gr"); p1.sayInfo(); p2.sayInfo();
function Person(sName,sSex){ switch(arguments.length){case 0 : this.name = "unKnown"; this.sex = "unKnown"; break;case 1 : this.name = sName; this.sex = "unKnown"; break;case 2 : this.name = sName; this.sex = sSex; break;}; } Person.prototype.sayInfo = function(){ alert("name : " + this.name + " ,sex :" + this.sex); }; var p1 = new Person("yzl","male"); var p2 = new Person("gcm"); var p3 = new Person(); p1.sayInfo(); p2.sayInfo(); p3.sayInfo();