- N +

javascript案例教程(javascript設計網(wǎng)頁作品)

js參數(shù)怎么傳遞對象參數(shù)

1.可以通過對象字面量的方式傳遞對象參數(shù)。2.因為在JavaScript中,可以使用對象字面量的方式創(chuàng)建一個對象,并將其作為參數(shù)傳遞給函數(shù)。對象字面量是一種簡潔的語法,可以直接在代碼中定義對象的屬性和值。通過這種方式,可以將多個參數(shù)封裝成一個對象,便于傳遞和管理。3.除了對象字面量,還可以使用構(gòu)造函數(shù)或者類的方式創(chuàng)建對象,并將其作為參數(shù)傳遞。這樣可以更加靈活地組織和傳遞參數(shù),提高代碼的可讀性和可維護性。同時,還可以通過對象的屬性和方法來操作和訪問對象的數(shù)據(jù),實現(xiàn)更加復雜的功能。

js怎么定義一個類

首先我們用function來定義一個對象:people,該對象有一個屬性,叫name。

然后用phototype為這個對象添加二個方法,setName和sayHi,其中setName方法是把對象的屬性name做修改,用方法傳進來的參數(shù)賦值。sayHi方法則是在控制臺輸出信息。

接著上面二步就相當于定義了一個類了,該類有一個屬性,和二個方法。

我們用new關(guān)鍵字來創(chuàng)建一個people類的實例:varp1=newpeople();

然后看是否可以訪問到類的屬性

JavaScript中,如何才能實例化一個對象

不是Date一個對象的問題,是js語言的特性。js的對象構(gòu)造器,實際上是一個函數(shù)。用new方式,會創(chuàng)建對象的一個新實例。如果不用new,相當于直接調(diào)用函數(shù)。構(gòu)造函數(shù)內(nèi)如果有對this的引用,不會指向新實例本身(也不存在這個新實例),而是會指向調(diào)用構(gòu)造函數(shù)時的上下文環(huán)境。

如何使用JavaScript構(gòu)建一個神經(jīng)網(wǎng)絡

首先,我必須承認我不是神經(jīng)網(wǎng)絡或機器學習方面的專家。坦率的說,我仍然對大部分內(nèi)容感到困惑。但希望這能夠鼓勵到正在讀這篇文章,并急切想嘗試M.L的非專家們。

機器學習會時不時地出現(xiàn),我會告訴自己「是的,這很酷……但是我不確定我是否想在接下來幾個月的時間里學習線性代數(shù)和微積分?!?/p>

然而,像很多的開發(fā)人員一樣,我對JavaScript很感興趣,偶爾也會尋找在JS中實現(xiàn)機器學習的例子,結(jié)果卻發(fā)現(xiàn)大量的文章和StackOverflow的帖子都在告訴我們對于M.L.來說JS是多么糟糕的語言,誠然,這是事實。然后我就分心了,繼續(xù),認為他們是對的,我應該回去驗證表格輸入并等待CSS網(wǎng)格的啟動。

但是后來我發(fā)現(xiàn)了Brain.js,這讓我大吃一驚。它在哪里被藏起來了?!文檔寫的非常好且易于遵循,在開始大約30分鐘之內(nèi),我就建立并訓練了一個神經(jīng)網(wǎng)絡。事實上,如果你想直接跳過整篇文章,僅僅在Github上閱讀readme(https://github.com/BrainJS/brain.js),請便。它真的很棒。

也就是說,接下來的內(nèi)容不是關(guān)于深入研究神經(jīng)網(wǎng)絡的隱藏輸入層、激活函數(shù)或如何使用Tensorflow的教程。相反,這是一個簡單的、入門級別的關(guān)于如何實現(xiàn)Brain.js的解釋,這有點超出了文檔的范圍。

OK,讓我們做點什么......

以下是我們將要做的事情的概述:

1.創(chuàng)建你的起始文件

2.決定你想要你的神經(jīng)網(wǎng)絡做什么

3.建立Brain.js并了解如何處理訓練數(shù)據(jù)和用戶輸入

4.收集一些訓練數(shù)據(jù)

5.運行神經(jīng)網(wǎng)絡

6.利潤?

如果你希望直接下載此項目的工作版本,而不是按照文章進行操作,那么你可以在這里(https://github.com/lordpoint/neural-network-author-classifier)克隆Github存儲庫。

1-起始文件

創(chuàng)建一個新目錄并在其中放置一個好的ol』*index.html*樣板文件。然后創(chuàng)建三個JS文件:*brain.js、training-data.js*和*scripts.js*(或用于默認JS文件的任何通用項),當然,將所有這些文件導入到index.html的底部文件中。

永遠不要害怕看到文件結(jié)構(gòu)

到目前為止都很容易。

現(xiàn)在,在這里(https://raw.githubusercontent.com/harthur-org/brain.js/master/browser.js)獲取Brain.js的源代碼。將**全部內(nèi)容**復制并粘貼到空的*Brain.js*文件中,點擊save和bam:完成4個文件中的2個。

2-「我的目的是什么?」

接下來是有趣的部分:決定你的機器學什么。用這樣的東西可以解決無數(shù)的實際問題,例如,情感分析或圖像分類等。我碰巧認為將文本作為輸入的M.L.的應用程序非常有趣,因為你幾乎可以在任何地方找到訓練數(shù)據(jù),并且他們有各種各樣的潛在用例,所以我們將在這里使用的例子是一個處理文本分類的例子:

我們將確定一個推特是由DonaldTrump還是KimKardashian寫的。

Ok,這可能不是最有用的應用程序。但是Twitter是機器學習素材的寶庫,盡管它可能是無用的,但我們的推特作者識別器仍然會說明一個強大的觀點。一旦它被訓練完成,我們的神經(jīng)網(wǎng)絡將可以在看到**它從未看過的**推特后確定它是由DonaldTrump還是KimKardashian所寫的,僅僅通過識別他們所寫東西中的模式。為了做到這一點,我們將需要提供盡可能多的訓練數(shù)據(jù),以便將其復制/粘貼到我們的*training-data.js*文件中,然后我們可以看看我們是否能找到一些推特的作者。

3-建立和數(shù)據(jù)處理

現(xiàn)在剩下要做的就是在我們的*scripts.js*文件中建立Brain.js,并提供一些在*training-data.js*文件中的訓練數(shù)據(jù)。但是在此之前,讓我們從30,000英尺的角度來看一下這些將如何工作。

建立Brain.js非常簡單,所以我們不會花費太多時間,但是有一些關(guān)于如何預測其輸入數(shù)據(jù)被格式化的細節(jié),我們應該先來看一下。我們先看一下文檔匯中包含的建立示例(我在此略微做過修改),這些示例很好地說明了這一點:

letnet=newbrain.NeuralNetwork();

net.train([

{

Input:{r:0.03,g:0.7,b:0.5},

Output:{black:1}

},{

Input:{r:0.16,g:0.09,b:0.2},

Output:{black:1}

},{

Input:{r:0.5,b:0.5},

Output:{black:1}

}

]);

letoutput=net.run({r:1,g:0.4,b:0});

首先,上面的例子實際上是一個工作A.I(它看著給定的顏色,然后告訴你黑色文本還是白色文本在上面更清晰)。這有希望說明Brain.js是多么容易使用。只是實例化、訓練、然后運行而已。我的意思是,如果你將訓練數(shù)據(jù)內(nèi)聯(lián),將會是3行代碼。很酷。

現(xiàn)在讓我們來談一下訓練數(shù)據(jù)。在上面的例子中,除了訓練數(shù)據(jù)整體input:{},output:{}的格式,還有兩個重要的事情需要注意。

首先,數(shù)據(jù)不需要長度相同。正如你在上面第11行看到的,只有一個R和B值通過,而另外兩個輸入通過了R、G和B的值。另外,值得一提的是,即使上面的例子將輸入看作對象,你也可以使用數(shù)組。我提到這點很大程度上是因為我們將在項目中傳遞不同長度的數(shù)組。

第二,這些不是有效的RGB值。如果你想真的使用它們,每個都會變成黑色。這是因為輸入值必須介于0和1之間才能使Brain.js和它們一起工作。因此,在上面的例子中,每種顏色都必須經(jīng)過處理(可能只是經(jīng)過一個將其除以255的函數(shù)進行處理——RGB的最大值)以使其工作。我們也會做同樣的事情。

3.1—encode()

所以如果我們想讓神經(jīng)網(wǎng)絡接受推特(即字符串)為輸入,我們需要通過一個類似的函數(shù)(下面稱為encode())來處理它們,這將使字符串中的每一個字符變成一個介于0和1之間的值,并將其儲存在一個數(shù)組中。幸運的是,Javascript有一個將字符轉(zhuǎn)化成ASCII的簡單方法,叫做charCodeAt()。所以我們將使用它并將輸出除以擴展的ASCII(http://www.theasciicode.com.ar/)碼的最大值:255(我們用**擴展的**ASCII

碼,以防遇到像**é**或**?**這樣的邊緣情況),這將確保我們得到的值<1。

3.2—processTrainingData()

另外,我們會將訓練數(shù)據(jù)存儲為純文本,而不是我們最終將輸入到人工智能的編碼數(shù)據(jù)——稍后你將會為此感謝我。所以我們需要另一個函數(shù)(下面稱為processTrainingData())將前面提到的編碼函數(shù)應用到訓練數(shù)據(jù)中,有選擇地將文本轉(zhuǎn)換為編碼字符,并返回一組訓練數(shù)據(jù),這些數(shù)據(jù)將與Brain.js很好的工作。

Sohere』swhatallofthatcodewilllooklike(thisgoesintoyour『scripts.js』file):

所以下面是所有的代碼(這會進入你的『scripts.js』文件中):

lettrainedNet;

functionencode(arg){

returnarg.split('').map(x=>(x.charCodeAt(0)/255));

}

functionprocessTrainingData(data){

returndata.map(d=>{

return{

input:encode(d.input),

output:d.output

}

})

}

functiontrain(data){

letnet=newbrain.NeuralNetwork();

net.train(processTrainingData(data));

trainedNet=net.toFunction();

console.log('Finishedtraining...');

};

functionexecute(input){

letresults=trainedNet(encode(input));

letoutput;

results.trump>results.kardashian?output='Trump':output='Kardashian';

returnoutput;

}

train(trainingData);

31行。這是非常多的。

在這里你會注意到在train()函數(shù)中的第20行有前面文檔的示例中沒有提到的(除了我們已經(jīng)討論過的兩個輔助函數(shù)外),它將訓練過的神經(jīng)網(wǎng)絡保存到一個叫trainedNet的全局變量中。這可以防止我們每次使用神經(jīng)網(wǎng)絡時不得不重新訓練它們。一旦網(wǎng)絡被訓練并保存到變量中,我們可以將它稱為函數(shù),并傳入編碼輸入(如execute()函數(shù)中的第25行)以使用A.I。

好的,所以現(xiàn)在你的*index.html*、*brain.js*、和*scripts.js*文件都完成了?,F(xiàn)在我們需要的是將一些東西放入training-data.js中,準備好開始吧。

4-訓練

最后,我們的訓練數(shù)據(jù)。像我之前提到的,我們將所有推特存儲為文本,并將它們編碼為數(shù)值,這將使你在實際需要復制/粘貼訓練數(shù)據(jù)時變得更加容易。沒有必要的格式。只需要在文本中粘貼并添加一個新行。

consttrainingData=[

{

input:"InsideChi'snursery",

output:{kardashian:1}

},{

input:"WhyIdyedmyhairpink",

output:{kardashian:1}

},{

input:"FeelingBlue(wearing@kkwbeautypowdercontourinmedium&darkcontourkitaseyeshadow,&anewlipcomingsoon)",

output:{kardashian:1}

},{

input:"Iwillbeinterviewedby@JudgeJeanineon@FoxNewsat9:00P.M.Enjoy!",

output:{trump:1}

},{

input:"DemMemo:FBIdidnotdisclosewhotheclientswere-theClintonCampaignandtheDNC.Wow!",

output:{trump:1}

},{

input:"ThankyoutothegreatmenandwomenoftheUnitedStates@SecretServiceforajobwelldone!",

output:{trump:1}

}

]

把它添加到你的『training-data.js』文件中,你就完成了!

注意:雖然上面的例子只顯示了每個人的3個樣本,但我用了10個;我只是不希望這個樣本占用太多空間。當然,你的神經(jīng)網(wǎng)絡的準確性會隨著你提供的訓練數(shù)據(jù)量的增加而成比例的增加,所以你可以隨意使用比我更多或更少的數(shù)據(jù),看看它是如何影響結(jié)果的。

5-執(zhí)行

現(xiàn)在,運行新訓練的神經(jīng)網(wǎng)絡只需要在『script.js』文件的底部額外添加一行調(diào)用execute()函數(shù)的指令,并傳入一個Trump或Kardashian的推特。確保console.log,因為我們還沒有建立UI。下面是一個來自KimKardashian的推特,它不在我的訓練數(shù)據(jù)中(即網(wǎng)絡之前沒有見過這篇推特):

然后在本地主機上拉起index.html頁面,檢查console,然后......

在這里!該網(wǎng)絡正確識別了它之前從未見過的來自KimKardashian的推特,確定性為86%。

現(xiàn)在讓我們用Trump的推特再嘗試一下:

console.log(execute("WhetherweareRepublicanorDemocrat,wemustnowfocusonstrengtheningBackgroundChecks!"));

結(jié)果是......

再一次,一個從未見過的推特。再一次,正確識別!這次有97%的確定性。

6-利潤?

現(xiàn)在你有一個神經(jīng)網(wǎng)絡可以訓練你想要的任何文本!你可以輕松地調(diào)整它來識別電子郵件或公司在線評論中的情緒,識別垃圾郵件,分類博客文章,確定信息是否緊急,或任何上千種不同的應用程序。盡管我們的推特識別器是無用的,但是它仍然說明了一個非常有趣的觀點:像這樣的神經(jīng)網(wǎng)絡可以執(zhí)行類似根據(jù)寫作方式識別作者這樣的細致入微的任務。

所以,即使你不去創(chuàng)建一個以機器學習為動力的創(chuàng)新或有用的工具,這仍然是你開發(fā)工具中很好的經(jīng)驗。你永遠不知道什么時候可能就派上用場了,甚至可能在未來開辟新的機會。

新手如何學習閱讀JavaScript

根據(jù)經(jīng)驗,學習編程不管是Java,C語言,還是JavaScript與英語關(guān)系不是很大,而且現(xiàn)在很多中文學習網(wǎng)站,所以基本可以不用考慮英語不會的問題。

JavaScript學習入門容易,上手容易,深入學習難,很多JavaScript用到的單詞其實不用我們死記,現(xiàn)在很多開發(fā)工具都是有提示功能,只要在平時大概記一下這個功能需要哪個,用得上英語可能就是變量的命名,實在不懂怎么用命名,只要用中文拼音也勉強可以,但是我門要習慣使用比較正式開發(fā),比如不懂英文可以網(wǎng)上翻譯,這樣代碼看起來比較優(yōu)雅,同時給別人看自己代碼也容易理解。

新手在學習JavaScript一般在兩三天就可以簡單制作小功能了,先從看網(wǎng)上很多中文文檔開始,一般文檔都有簡單的案例,這些案例就是你最好的入門,通過自己的實戰(zhàn)之后,再看看別人代碼,就可與真正上手了,比如:選項卡,菜單切換,簡單計算器等等。

當你學完基礎之后,再學JavaScript前端常用框架jQuery,其實在項目中,不用管新手還是老手,多數(shù)情況下都是在網(wǎng)上復制別人代碼比較多。

JavaScript字符串對象substr方法入門實例(用于截取字符串)

javascript中截取字符串的實現(xiàn)方法如下:

1、使用substr()函數(shù):substr()方法可在字符串中抽取從start下標開始的指定數(shù)目的字符。

varstr="Helloworld!"

;//定義字符串document.write(str.substr(3))

;//打印截取后的結(jié)果從第三位開始到最后輸出結(jié)果如下:loworld!如果是寫成指定起始位和長度就會按照指定的長度輸出:

document.write(str.substr(3,5));輸出結(jié)果:lowo2、利用substring()函數(shù):substring()方法用于提取字符串中介于兩個指定下標之間的字符。

varstr="Helloworld!"

;document.write(str.substr(3))

;輸出結(jié)果如下:loworld!如果是寫成指定起始位和長度就會按照指定的長度輸出:

document.write(str.substr(3,7))

;輸出結(jié)果:low

返回列表
上一篇:
下一篇: