JavaScript基礎(chǔ)

使用JS的形式

內(nèi)嵌JS

<head>
    <script type="text/javascript">
        document.write("開啟JS之旅");
    </script>
</head>

引用外部JS

<head>
    <script src="script.js"></script>
</head>

注釋

注釋格式同c語言,有單行“//”和多行"/* */"兩種

變量

var mychar = "javascript";

數(shù)據(jù)類型

基本數(shù)據(jù)類型(值類型)

  • Undefined
  • Null
  • Boolean
  • Number
  • String
    JavaScript不允許直接訪問內(nèi)存中的位置哥艇,也就是說不能直接操作對(duì)象的內(nèi)存空間绝编。

引用類型

對(duì)于引用類型,可以動(dòng)態(tài)添加屬性和方法貌踏,也可以改變和刪除其屬性和方法十饥。

var person = new Object();
person.name = "nicholas";
alert( person.name );

傳遞參數(shù)

所有函數(shù)的參數(shù)都是按照值傳遞的。

  • 在向參數(shù)傳遞基本類型的值時(shí)祖乳,被傳遞的值會(huì)被復(fù)制給一個(gè)局部變量逗堵;
  • 向參數(shù)傳遞引用類型的值時(shí),會(huì)把這個(gè)值在內(nèi)存中的地址復(fù)制一個(gè)給局部變量眷昆,因此這個(gè)局部變量的變化會(huì)反應(yīng)在函數(shù)的外部蜒秤。
function setName( obj ) {
    obj.name = "nicholas";
}
var person = new Object();
setName( person );
alert( person );    // "Nicholas"

// another sample
function setName( obj ) {
    obj.name = "Nicholas";
    obj = new Object();
    obj.name = "Greg";
}
var person = new Object();
setName( person );
alert( person.name );       // "Nicholas"

檢測(cè)類型

typeof
var s = "Nicholas";
var b = true;
var i = 22;
var u;
var n = null;
var o = new Object();

alert( typeof s );      // string
alert( typeof i );      // number
alert( typeof b );      // boolean
alert( typeof u );      // undefined
alert( typeof n );      // object
alert( typeof o );      // object
instanceof
alert( person instanceof Objecct );

作用域

有全局和局部變量,沒有塊級(jí)作用域

引用類型

對(duì)象屬性的訪問

// 如下兩種訪問方式相同
var name = person[name];
var name = person.name;
// 如果屬性名中包含會(huì)導(dǎo)致語法錯(cuò)誤的字符亚斋,或者包含關(guān)鍵字垦藏,則使用方括號(hào)訪問方式
person["first name"] = "peter";

除非必須使用方括號(hào)的方式,通常建議使用點(diǎn)的方式進(jìn)行訪問伞访。

繼承

使用prototype實(shí)現(xiàn)繼承

function Animal() {
    Animal.prototype.species = "動(dòng)物";
}

function extend( Child, Parent ) {
    var F = function() {};
    F.prototype = Parent.prototype;
    Child.prototype = new F();
    Child.prototype.constructor = Child;
    Child.uber = Parent.prototype;
}

// usage
extend( Cat, Animal );
var cat1 = new Cat( "大毛", "黃色" );
alert( cat1.species );

函數(shù)表達(dá)式

閉包

閉包是指有權(quán)訪問另一個(gè)函數(shù)作用域中的變量的函數(shù)掂骏。
創(chuàng)建閉包的常見方式,就是在一個(gè)函數(shù)內(nèi)部創(chuàng)建另一個(gè)函數(shù)厚掷。

Array

var showTime = [ "12:30", "2:34", "5:00" ];
var arr = new Array();

// Array operation
var colors = new Array();
var count = colors.push( "red", "green" );
colors.pop();   // LIFO
colors.shift(); // FIFO

Date類型

var someDate = new Date( Date.parse( "May 25, 2004" ) );
// 以下的方式也會(huì)在后臺(tái)調(diào)用Date.parse
var someDate = new Date( "May 25, 2004" );
// 2005-05-05 17:55:55
var day = new Date( 2005, 4, 5, 17, 55, 55 );
date.now();

從一個(gè)函數(shù)返回另一個(gè)函數(shù)

function createCompareFunction( propertyName ) {
    return function( obj1, obj2 ) {
        var value1 = obj1[propertyName];
        var value2 = obj2[propertyName];
        
        if( value1 < value2 ) {
            return -1;
        } else if( value1 > value2 ) {
            return 1;
        } else {
            return 0;
        }
    }
}

var data = [{name: "Zark", age: 18}, {name: "Richo", age: 29}];
data.sort( createCompareFunction( "name" ) );
data.sort( createCompareFunction( "age" ) );

函數(shù)內(nèi)部屬性

// 使用arguments.callee來做遞歸
function factorial( num ) {
    if( num <= 1 ) {
        return 1;
    } else {
        return num * arguments.callee( num - 1 );
    }
}

// this
window.color = "red";
var o = { color: "blue" };

function sayColor() {
    alert( this.color );
}

sayColor();         // "red"

o.sayColor = sayColor;
o.sayColor();       // "blue"

output

document.write( "I love JavaScript!" );

條件語句

if

var myage = 80;
if( score >= 60 ) {
    document.write( "fantasic" );
} else {
    document.write( "you need study harder" );
}

switch

switch( chooseCase ) {
case "A":
    openCase( "A" );
    break;
case "B":
    ...
    break;
}

循環(huán)

for

for( var x = 0; x < 37; x++ ) {
    takeStep();
}

while

while( !rockVisible )
    takeStep();

button

button click

<head>
    <script type="text/javascript">
        function rec() {
            var mychar = "I Love JavaScript";
            alert( mychar );
        }
    </script>
</head>
<body>
    <input name="button" type="button" onClick="rec()" value="Click Me" />
</body>

function

function context() {
    alert( "function called" );
}

functions

Timer

// 單次定時(shí)器弟灼,單位是ms
setTimeOut( "alert('Wake up!');", 6000 );

// 間隔定時(shí)器
var timerId = setInterval( "alert('Wake up!' );", 6000 );
// 清除定時(shí)器
clearInterval( timerId );

Interval

var myInterval = setInterval( myFunc, 100000 );
...
clearInterval( myInterval );

根據(jù)屏幕size調(diào)整圖像

function resize() {
    document.getElementById( "rockImg" ).style.height = ( document.body.clientHeight - 100 ) * 0.9;
}

判斷瀏覽器是否支援cookie

var cookieSupport = navigator.cookieEnable;

對(duì)話框

alert

confirm

var ret = confirm( "are you male or female?" );
if( ret == true ) {
    document.write( "you are male!" );
}

prompt

var score = prompt( "what is your score?", "60" );
if( score >=90 ) {
    document.write( "fantasic" );
}

open new window

// window.open( [URL], [window name], [param] );
window.open( "http://www.imooc.com", "_blank", width=600, height=400, top=100, left=0 );

close window

window.close(); //close current window
//close specified window
var mywin = window.open( "http://baidu.com" );
mywin.close();

DOM

通過ID獲取元素

<body>
<div id="con">JavaScript</div>
<script type="text/javascript">
    var mychar = document.getElementById( "con" );
    document.write( "result: " + mychar );
</script>
</body>

innerHTML屬性

<body>
    <h2 id="con">javascript</h2>
    <script type="text/script">
        var mychar = document.getElementById( "con" );
        mychar.innerHTML = "Hello, World!";
    </script>
</body>

改變HTML樣式

var mychar = document.getElementById( "con" );
mychar.style.color = 'red';
mychar.style.backgroundColor = '#ccc';
mychar.style.width = '300px';

更改控制類名

<head>
    <style type="text/css">
        .one {
            width: 200px;
            background-color: #ccc;
        }
        .two {
            font-size: 18px;
            color: #F00;
        }  
    </style>
</head>
<body>
    <p id="con" class="one">JavaScript</p>
    <input type="button" value="Click Me" onclick="modifyClass()" />
    <script type="text/javascript" >
        var mychar = document.getElementById( "con" );
        function modifyClass() {
            mychar.className = "two";
        }   
    </script>
</body>

表單腳本

HTMLFormElement

提交表單

<!-- 通用提交按鈕 -->
<input type="submit" value="Submit Form">
<!-- 自定義提交按鈕 -->
<button type="submit">Submit Form</button>
<!-- 圖像按鈕 -->
<input type="image" src="graphic.gif">
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末级解,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子田绑,更是在濱河造成了極大的恐慌勤哗,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掩驱,死亡現(xiàn)場(chǎng)離奇詭異芒划,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)欧穴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門民逼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人涮帘,你說我怎么就攤上這事拼苍。” “怎么了调缨?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵疮鲫,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我弦叶,道長(zhǎng)俊犯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任伤哺,我火速辦了婚禮燕侠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘默责。我一直安慰自己贬循,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布桃序。 她就那樣靜靜地躺著杖虾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪媒熊。 梳的紋絲不亂的頭發(fā)上奇适,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音芦鳍,去河邊找鬼嚷往。 笑死,一個(gè)胖子當(dāng)著我的面吹牛柠衅,可吹牛的內(nèi)容都是我干的皮仁。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼贷祈!你這毒婦竟也來了趋急?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤势誊,失蹤者是張志新(化名)和其女友劉穎呜达,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體粟耻,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡查近,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了挤忙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片霜威。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖饭玲,靈堂內(nèi)的尸體忽然破棺而出侥祭,到底是詐尸還是另有隱情叁执,我是刑警寧澤茄厘,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站谈宛,受9級(jí)特大地震影響次哈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吆录,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一窑滞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧恢筝,春花似錦哀卫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至侄柔,卻和暖如春共啃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背暂题。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國打工移剪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人薪者。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓纵苛,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子攻人,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載請(qǐng)聲明出處 博客原文 隨手翻閱以前的學(xué)習(xí)筆記幔虏,順便整理一下放在這里,方便自己復(fù)習(xí)贝椿,也希望你有也有幫助吧 第一課...
    程序員poetry閱讀 12,646評(píng)論 13 94
  • 1.HTML DOM (Document Object Model) document.getElementByI...
    廖馬兒閱讀 1,411評(píng)論 0 17
  • Javascript 基礎(chǔ) 語法 語法概述 一些代碼的示例: 注意等于號(hào)的兩種不同的用戶想括。 一個(gè)單獨(dú)的等于號(hào)(=)...
    wanqijian閱讀 625評(píng)論 0 2
  • 語法基礎(chǔ) - 詞法 字符集 Unicode字符集, 區(qū)分大小寫 注釋 // /* */ 直接量 數(shù)字 小數(shù) 字符串...
    KeKeMars閱讀 875評(píng)論 1 11
  • 【捭闔第一】(1.5) 捭之者,料其情也烙博;闔之者瑟蜈,結(jié)其誠也。皆見其權(quán)衡輕重渣窜,乃為之度數(shù)铺根。圣人因而為之慮,其不中權(quán)衡...
    易海文閱讀 506評(píng)論 0 0