無處不在的Javascript
Javascript現在已經無處不在了,也許你正開啟的某個網站他可能是node.js+json+javascript+mustache.js完成的,雖然你還沒理解上面那些是什麼,也正是因為你不理解才需要去學習更多的東西。但是Javascript已經無處不在了,可能會在你手機上的某個app裡,在你瀏覽的網頁裡,在你IDE中的某個進程中啟動並執行。
重新設計
我們將輸出的工作移到函數的外面,
function calc(tang,num){ return tang*num;}document.write(calc(3,4));
接著我們用一種更有意思的方法來寫這個問題的解決方案
function calc(tang,num){ return tang*num;}function printResult(tang,num){ document.write(calc(tang,num));}printResult(3, 4)
看上去更專業了一點點,如果我們只需要計算的時候我們只需要調用calc,如果我們需要輸出的時候我們就調用printResult的方法。
object和函數
我們還沒有說清楚之前我們遇到過的document.write以及Math.sin的文法看上去很奇怪,所以讓我們看看他們到底是什麼,修改app.js為以及內容
document.write(typeof document);document.write(typeof Math);
typeof document會返回document的資料類型,就會發現輸出的結果是
object object
所以我們需要去弄清楚什麼是object。對象的定義是(轉載保留:be a geek 4:無處不在的javascript 3)
無序屬性的集合,其屬性可以包含基本值、對象或者函數。
建立一個object,然後觀察這便是我們接下來要做的
store={};store.tang=4;store.num=3;document.write(store.tang*store.num);
我們就有了和document.write一樣的用法,這也是對象的美妙之處,只是這裡的對象只是包含著基本值,因為
typeof story.tang="number"
一個包含對象的對象應該是這樣子的。
store={};store.tang=4;store.num=3;document.writeln(store.tang*store.num);var wall=new Object();wall.store=store;document.write(typeof wall.store);
而我們用到的document.write和上面用到的document.writeln都是屬於這個無序屬性集合中的函數。
下面代碼說的就是這個無序屬性集中中的函數。
var IO=new Object();function print(result){ document.write(result);};IO.print=print;IO.print("a obejct with function");IO.print(typeof IO.print);
我們定義了一個叫IO的對象,聲明對象可以用
var store={};
又或者是
var store=new Object{};
兩者是等價的,但是用後者的可讀性會更好一點,我們定義了一個叫print的函數,他的作用也就是document.write,IO中的print函數是等價於print()函數,這也就是對象和函數之間的一些區別,對象可以包含函數,對象是無序屬性的集合,其屬性可以包含基本值、對象或者函數。
複雜一點的對象應該是下面這樣的一種情況。
var Person={name:"phodal",weight:50,height:166};function dream(){ future;};Person.future=dream;document.write(typeof Person);document.write(Person.future);
而這些會在我們未來的實際編編程中用得更多。