当前位置:首页 > 代码 > 正文

js面向对象代码(js面向对象代码是什么)

admin 发布:2022-12-19 19:20 144


今天给各位分享js面向对象代码的知识,其中也会对js面向对象代码是什么进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

如何用javascript面向对象编程

经常看到一些JavaScript的代码脏乱得无法理解,到处都是属性和方法,或者一个循环套着一个循环。但如果使用面向对象就能很好的理清代码,并方便理解和修改代码。如果你不希望自己的代码只有上帝理解的话,就请尽量考虑使用面向对象的模式。

译文正文:

到处都是属性、方法,代码极其难懂,天哪,我的程序员,你究竟在做什么?仔细看看这篇指南,让我们一起写出优雅的面向对象的JavaScript代码吧!

作为一个开发者,能否写出优雅的代码对于你的职业生涯至关重要。随着像Node.js这类技术的发展,你甚至可以在服务器端使用JavaScript了。同样的,你也可以使用JavaScript来控制MongoDB的持续数据存储。

文本标记

文本标记只是JavaScript里创建对象的一种方法,当然这里肯定不止这一种,但它是你在只打算创建一个对象实例时的首选方法。

var bill = {};

上面的代码并不实用,它只是一个空对象。接下来我们动态地向这个对象中添加一些属性和方法。

bill.name = "Bill E Goat"; bill.sound = function() { console.log( 'bahhh!' ); };

这里添加了属性name,并且给它分配了值"Bill E Goat"。我们并不需要先创建一个空对象,而可以把所有代码直接写在一对括号里。

var bill = { name: "Bill E Goat", sound: function() { console.log( 'bahhh!' ); }};

是不是很美观?访问它的属性和方法就像呼吸一样简单、自然。

bill.name; // "Bill E Goat" bill.sound(); // "bahhh"

如果属性名不是一个合法的标志符,我们还可以这样访问它:

bill['name']; // "Bill E Goat"

注意:我在调用方法时在其后添加了圆括号。现在,我们再重写一下当前的sound方法,并添加一个参数。

bill.sound = function(noise) { console.log(noise); }; bill.sound("brrr!"); // "brrr!" He's cold :)

很好,我们已经传入参数了,并且在方法定义中访问了它。接下来,向对象中增加一个新方法来访问name属性。

bill.sayName = function() { console.log( "Hello " + this.name ); }; bill.sayName(); // "Hello Bill E Goat"

我们可以使用this.propertyName(在本例中即this.name)在方法内访问属性。

bill.sayName; // function

怎么回事?访问sayName方法返回了一个方法定义。现在让我们再深入些。

var sound = bill.sound; sound('moo!'); // "moo!"

现在我们指定了sound方法为一个局部函数,可以调用这个函数并且传递参数。你认为在复制bill的时候会发生什么?(类比下克隆羊Dolly)

var sally = bill; sally.name; // "Bill E Goat",可它的名字是Sallysally.name = "Sally"; sally.name; // "Sally",好些了bill.name; // "Sally",问题又转移到bill身上了

上面的例子中我们新建了一个变量sally,并使它和bill相同,所以bill和sally会在内存中引用了同一个对象。这时候给改变一块它们就会同时发生改变。再看看下面这段代码:

bill.name = "Bill E Goat"; bill.sayName(); // "Hello Bill E Goat"; var sayName = bill.sayName; sayName; // function 目前为止一切顺利sayName(); // "Hello ",为什么这里又不再显示bill的名字了?

bill的name是一个本地实例变量,只对bill可得。当sayName方法被创建为全局变量时,当它碰到this.name声明时,它会在全局查找name的值。唯一的问题在于name还没有被定义。现在让我们在全局定义name,看看会发生什么:

var name = "Bearded Octo"; sayName(); // "Hello Bearded Octo"

这里我们在全局范围内定义了name变量,并且赋予了值"Bearded Octo"。当我们在调用sayHello方法时它会在全局范围内查找name变量,最终会获得值"Bearded Octo"。我们为什么不为这几个对象建立一个共同的“类”呢?

构造函数

构造函数是另一个编写面向对象JavaScript代码的方法,当你需要初始化对象的属性、方法,或者需要创建多个属性、方法各不相同的实例时,它将是你最佳的选择。同样我们先从创建一个空对象开始:

function Game() {};

这个对象包括自己的属性,你甚至可以在创建对象时传入属性,然后再对其进行修改。

var zelda = new Game(); var smb = new Game(); zelda.title = "Legend of Zelda"; smb.title = "Super Mario Brothers"; zelda.title; // "Legend of Zelda" smb.title; // "Super Mario Brothers"

现在这个对象已经有自己的方法了!新创建对象时我们甚至可以传递属性,之后再修改。

function Game(title) { this.title = typeof title !== 'undefined' ? title : ""; }; var zelda = new Game("Legend of Zelda"); zelda.title; // "Legend of Zelda" zelda.title = "Ocarina of Time"; zelda.title; // "Ocarina of Time" var blank = new Game(); blank.title; // ""

也许你没看明白第二行的内容,其实是使用了三元操作来避免单行的if else,它和下面标准的if else语句是一个意思。

if (typeof title !== 'undefined') { this.title = title; } else { this.title = ""; } // Is the same as this.title = typeof title !== 'undefined' ? title : "";

如果title变量在对象被创建时传入,title实例变量将会指定为title的值。如果没有值传入,那么title将会被初始化为默认值""。我们同样可以创建一个方法来访问这个属性:

zelda.loveTitle = function() { console.log( "I love " + this.title ); }; zelda.loveTitle(); // "I love Ocarina of Time"

这样就很整洁了,但是我们还能做得更好。我们可以在Game类中添加一个方法,这样所有Game类的实例将都能使用此方法。

Game.prototype.heartIt = function() { console.log( "I heart " + this.title ); }; zelda.heartIt(); // "I heart Ocarina of Time" smb.heartIt(); // "I heart Super Mario Brothers"

如何用JS面向对象方法读取ACCESS中的数据并显示

1.Access数据库名为 MyData.Mdb, 里面建了一个名为count的表,表由两个  字段组成: ID和COUNT,表里有一条数据: ('count','100')。

文本文件名为 count.txt,里面随便写入一个数字。

静态页面名为Cnt.htm。

2.以上3个文件都放在同一目录下。

由于采用Access数据库,而它采用非标准SQL语法,所以要注意在表名和字段名上需要加方括号: []

3.下面是页面里的代码:其中getCountFromDB方法是对Access数据库进行操作,getCountFromTxt方法是对txt纯文本进行操作,这两个方法都在本地执行通过。

!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"

HTML

HEAD

TITLE New Document /TITLE

META NAME="Generator" CONTENT="EditPlus"

META NAME="Author" CONTENT=""

META NAME="Keywords" CONTENT=""

META NAME="Description" CONTENT=""

SCRIPT LANGUAGE="JavaScript"

!--  

function getCountFromDB() {

//以当前页面文件为基础,找到文件所在的绝对路径。

var filePath = location.href.substring(0, location.href.indexOf("Cnt.htm"));

var path = filePath + "MyData.mdb";

//去掉字符串中最前面的"files://"这8个字符。

pathpath = path.substring(8);

var updateCnt = 0;

//生成查询和更新用的sql语句。

var sqlSelCnt = "SELECT COUNT FROM [COUNT] WHERE ID = 'count'";

var sqlUpdCnt = "UPDATE [COUNT] SET [COUNT] = '";

//建立连接,并生成相关字符串

var con = new ActiveXObject("ADODB.Connection");

con.Provider = "Microsoft.Jet.OLEDB.4.0";

con.ConnectionString = "Data Source=" + path;

con.open;

var rs = new ActiveXObject("ADODB.Recordset");

rs.open(sqlSelCnt, con);

while (!rs.eof) {

var cnt = rs.Fields("COUNT");

document.write(cnt);

//将取得结果加1后更新数据库。

updateCnt = cnt * 1 + 1;

rs.moveNext;

}

rs.close();

rs = null;

sqlUpdCntsqlUpdCnt = sqlUpdCnt + updateCnt + "'";

con.execute(sqlUpdCnt);

con.close();

con = null;  

}

function getCountFromTxt() {

var filePath = location.href.substring(0, location.href.indexOf("Cnt.htm"));

var path = filePath + "count.txt";

pathpath = path.substring(8);

var nextCnt = 0;

var fso, f1, ts, s;

//以只读方式打开文本文件。

var ForReading = 1;

//以读写方式打开文本文件。

var ForWriting = 2;

fso = new ActiveXObject("Scripting.FileSystemObject");

f1 = fso.GetFile(path);

ts = f1.OpenAsTextStream(ForReading, true);

s = ts.ReadLine();

nextCnt = eval(s) + 1;

document.write("now count is :" + s);

ts.Close();

ts = f1.OpenAsTextStream(ForWriting, true);

ts.WriteLine(nextCnt);

ts.close();  

}  

//--

/SCRIPT

/HEAD

BODY

SCRIPT LANGUAGE="JavaScript"

!--  

getCountFromTxt();  

//--

/SCRIPT

/BODY

/HTML

4.用这种方法来读写数据库,只适合做计数器和留言版这样的不需要保密性的工作,毕竟代码全是用javascript写成的,谁都可以看到,然后就可以得到路径把db文件下载下来进行分析,所以没办法用它来保存一些不想让别人知道的东西。

如何用纯js代码面向对象写个简单的21点游戏

1,html写好界面,定义好class和id

2,为了模拟出扑克牌21点游戏,应先定义卡牌池中有1-10,J,Q,K每个数字和字母分别有4个

3,js中实现界面交互,如点击开始按钮,随机从卡牌池中抽取一个数字或字母存入临时变量a,并附于点数之和num其相应的点数

4,点击抽牌按钮随机从卡牌池剩余的卡牌中抽取,对应的卡牌存入变量a中,点数之和num=num+本次抽卡的点数

5,当num21时提示玩家爆点,小于21点时可选按钮抽牌,等于21点时提示恭喜之类的话,如果点击完成抽牌则记录此玩家点数

6,同理可扩充玩家至2,3,4....个,原理相同,不同玩家存储对应的变量就可以了,最终通过所有=21点的玩家num,num1,num2来判断输赢

7,同理可设置庄家,庄家在与其他玩家点数相同时赢得对方

8,在此基础上就能增添许多功能了,比如每个玩家默认100金币,有底注,每轮开始的时候可加注,如玩家不跟则底注输掉无法参加游戏,等等之类的各种规则随便发挥

用JS用面向对象实现一个JS对象。对象里有两个属性,一个方法

使用for...in可以遍历js对象的属性,用法如下:brfor...in 语句用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。brfor ... in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。brbr1br2br3br4brbrfor (变量 in 对象)br{br //在此执行代码br}brbr“变量”用来指定变量,指定的变量可以是数组元素,也可以是对象的属性。br示例:brbr1br2br3brbrfor (var sprop in window) {br alert(sprop);br}brbr以上例子会弹出window对象中的所有属性

关于js面向对象代码和js面向对象代码是什么的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/20044.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载