面向对象的JavaScript

JavaScript定义类的方式有以下几种:

一、通过工厂方法定义类

function createObject(username, password) { var obj = new Object(); obj.username = username; obj.password = password; //通过这种方式定义的方法,每创建一个对象就会生成一个方法,这跟Java中同一个类 //的多个对象共享一个方法是不一样的,也可以将方法定义在外面,但是这就将类和其 //方法分离开,显得不是很直观 obj.userInfo = function () { alert("UserInfo: \nusername :" + this.username + "\npassword :" + this.password); } return obj; } var user = createObject("岂必消无踪", "尘间多少事"); user.userInfo();

二、通过构造方法

function Person(username, password, age) { this.username = username; this.password = password; this.age = age; this.personInfo = function () { alert("详细信息:\n用户名:" + username + "\n密码:" + password + "\n岁月:" +age); } } var per = new Person("夜玫瑰", "kitty", 21); var per2 = new Person("叶倾城", "meng", 18); per.personInfo(); per2.personInfo();


三、通过原型方式创建类prototype,所有对象共享同一属性

function Person() { } Person.prototype.loc = new Array(); Person.prototype.nickname = "路是月的痕"; Person.prototype.sayByeBye = function () { alert("详细信息:\n用户名:" + this.nickname + "\n所属门派:" + this.loc); } var per1 = new Person(); var per2 = new Person(); per1.loc.push("无名小卒"); per1.sayByeBye(); per2.sayByeBye();

四、混合的构造函数与原型方式(推荐定义的方式),可以解决多个对象实例共享同一属性变量的情况,对属性定义采用构造方法方式,方法定义采用原型方式


function Person() { this.loc = new Array(); this.nickname = "尘缘"; } Person.prototype.info = function() { alert("详细信息:\n用户名:" + this.nickname + "\n所属门派:" + this.loc); } var per1 = new Person(); var per2 = new Person(); per1.loc.push("伤心小箭"); per2.loc.push("海裳朵朵"); per2.nickname = "岁考"; per1.info(); per2.info();



五、动态的原型方式

function Person() { this.nickname = "五竹"; this.loc = new Array(); if(typeof Person.flag == "undefined") { //alert("ok"); Person.prototype.info = function () { alert("详细信息:\n用户名:" + this.nickname + "\n所属门派:" + this.loc); } Person.flag = "true"; } } var p1 = new Person(); var p2 = new Person(); p1.loc.push("天一神水"); p1.info(); p2.info();


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值