ES5代碼

<!DOCTYPE html>

<html lang="en">

<head>

? <meta charset="UTF-8">

? <title>ECMAScript理解</title>

</head>

<body>

<button id="testBtn">測試</button>

<!--

1. 它是一種由ECMA組織(前身為歐洲計算機(jī)制造商協(xié)會)制定和發(fā)布的腳本語言規(guī)范

2. 而我們學(xué)的 JavaScript 是ECMA的實(shí)現(xiàn), 但術(shù)語ECMAScript和JavaScript平時表達(dá)同一個意思

3. JS包含三個部分:

1). ECMAScript(核心)

2). 擴(kuò)展==>瀏覽器端

* BOM(瀏覽器對象模型)

* DOM(文檔對象模型)

3). 擴(kuò)展==>服務(wù)器端

* Node

4. ES的幾個重要版本

* ES5 : 09年發(fā)布

* ES6(ES2015) : 15年發(fā)布, 也稱為ECMA2015

* ES7(ES2016) : 16年發(fā)布, 也稱為ECMA2016? (變化不大)

-->

<script type="text/javascript">

</script>

</body>

</html>



<!DOCTYPE html>

<html lang="en">

<head>

? <meta charset="UTF-8">

? <title>嚴(yán)格模式</title>

</head>

<body>

<!--

1. 理解:

? * 除了正常運(yùn)行模式(混雜模式)料睛,ES5添加了第二種運(yùn)行模式:"嚴(yán)格模式"(strict mode)。

? * 顧名思義,這種模式使得Javascript在更嚴(yán)格的語法條件下運(yùn)行

2.? 目的/作用

* 消除Javascript語法的一些不合理熊榛、不嚴(yán)謹(jǐn)之處冲秽,減少一些怪異行為

* 消除代碼運(yùn)行的一些不安全之處漂佩,為代碼的安全運(yùn)行保駕護(hù)航

* 為未來新版本的Javascript做好鋪墊

3. 使用

? * 在全局或函數(shù)的第一條語句定義為: 'use strict';

? * 如果瀏覽器不支持, 只解析為一條簡單的語句, 沒有任何副作用

4. 語法和行為改變

* 必須用var聲明變量

* 禁止自定義的函數(shù)中的this指向window

* 創(chuàng)建eval作用域

* 對象不能有重名的屬性

-->

<script type="text/javascript">

//'use strict';

var username = 'kobe';

console.log(username);

function person(name,age);{

this.name = name;

this.name = age;

}

var kobe= new person('kobe,40');

var str='NBA';

// eval('alert(str)');

// eval('var str = "CBA";alert(str)');//cba

// alert(str);//nba

var obj = {

username:'kobe';//表示不能重名

username:'wade';

}

</script>

</body>

</html>



<!DOCTYPE html>

<html lang="en">

<head>

? <meta charset="UTF-8">

? <title>JSON對象</title>

</head>

<body>

<!--

1. JSON.stringify(obj/arr)

? * js對象(數(shù)組)轉(zhuǎn)換為json對象(數(shù)組)

2. JSON.parse(json)

? * json對象(數(shù)組)轉(zhuǎn)換為js對象(數(shù)組)

-->

<script type="text/javascript">

var obj = {username: 'kobe';//object {username: 'kobe'}

obj= json.stringify(obj);

console.log(typeof obj);//string {username: 'kobe'}

obj = json.parse(obj);

console.log(typeof obj);

console.log(obj.username);

}

</script>

</body>

</html>



<!DOCTYPE html>

<html lang="en">

<head>

? <meta charset="UTF-8">

? <title>Object擴(kuò)展</title>

</head>

<body>

<!--

ES5給Object擴(kuò)展了一些靜態(tài)方法, 常用的2個:

1. Object.create(prototype, [descriptors])

? * 作用: 以指定對象為原型創(chuàng)建新的對象

? * 為新的對象指定新的屬性, 并對屬性進(jìn)行描述

? ? - value : 指定值

? ? - writable : 標(biāo)識當(dāng)前屬性值是否是可修改的, 默認(rèn)為false

? ? - configurable: 標(biāo)識當(dāng)前屬性是否可以被刪除 默認(rèn)為false

? ? - enumerable: 標(biāo)識當(dāng)前屬性是否能用for in 枚舉 默認(rèn)為false

2. Object.defineProperties(object, descriptors)

? * 作用: 為指定對象定義擴(kuò)展多個屬性

? ? * get :用來獲取當(dāng)前屬性值得回調(diào)函數(shù)

? ? * set :修改當(dāng)前屬性值得觸發(fā)的回調(diào)函數(shù)祝钢,并且實(shí)參即為修改后的值

? * 存取器屬性:setter,getter一個用來存值冷冗,一個用來取值

-->

<script type="text/javascript">

? var obj= {username: 'jordan',age:55};

? var obj = {};

? obj1 = Object.create(obj,{

? ? sex:{

? ? ? value:'男',

? ? ? weitable:true,

? ? ? configurable:true,

? ? ? enumerable:true,

? ? }

? });

? console.log(obj1);

? console.log(obj1.sex);

? obj1.sex= '女';

? console.log(obj1,sex);

? //delete obj1.sex;

? //console.log(obj1);

? for(var i in obj1){

? ? console.log(i);

? }

? //

? var Obj2={fiestname: 'kobe' , lastname: 'bryant'};

? Object.defineProperties(Obj2,{

? ? fullname:{

? ? ? get:function(){//在獲取擴(kuò)展屬性,

? ? ? ? return this.firstname +"" + this.lastname;

? ? ? }

? ? ? set:function(data){

? ? ? ? console.log('set()',data);

? ? ? ? var names = data.split('');

? ? ? ? this.fiestname = names[0];

? ? ? ? this.fiestname = names[1];

? ? ? }

? ? }

? })

? console.log(obj2);

? console.log(obj2,fullname);

? obj2.fullname= 'tim duncan';

? console.log(obj2,fullname);

? var obj3 = {firstname: 'stephen',

? ? ? ? ? ? ? lastname:'cueey',

? ? ? ? ? ? ? get fullname(){

? ? ? ? ? ? ? ? return this.fullname+ "" + this.lastname;

? ? ? ? ? ? ? },

? ? ? ? ? ? ? set fullname(data){

? ? ? ? ? ? ? ? var names = data.split('');

? ? ? ? ? ? ? ? this.fullname = names[0];

? ? ? ? ? ? ? ? this.fullname = names[1];

? ? ? ? ? ? ? }

? ? ? ? ? ? };

? ? ? ? ? ? console.log(obj3);

? ? ? ? ? ? obj3.fullname = 'kobe bryant';

? ? ? ? ? ? console.log(Obj3.fullname);

</script>

<!--

? ? 對象本身的兩個方法

? ? * get propertyName(){} 用來得到當(dāng)前屬性值的回調(diào)函數(shù)

? ? * set propertyName(){} 用來監(jiān)視當(dāng)前屬性值變化的回調(diào)函數(shù)

-->

<script type='text/javascript'>

</script>

</body>

</html>



<!DOCTYPE html>

<html lang="en">

<head>

? <meta charset="UTF-8">

? <title>04_Array擴(kuò)展</title>

</head>

<body>

<!--

1. Array.prototype.indexOf(value) : 得到值在數(shù)組中的第一個下標(biāo)

2. Array.prototype.lastIndexOf(value) : 得到值在數(shù)組中的最后一個下標(biāo)

3. Array.prototype.forEach(function(item, index){}) : 遍歷數(shù)組

4. Array.prototype.map(function(item, index){}) : 遍歷數(shù)組返回一個新的數(shù)組催跪,返回加工之后的值

5. Array.prototype.filter(function(item, index){}) : 遍歷過濾出一個新的子數(shù)組锁蠕, 返回條件為true的值

-->

<script type="text/javascript">

? /*

? 需求:

? 1. 輸出第一個6的下標(biāo)

? 2. 輸出最后一個6的下標(biāo)

? 3. 輸出所有元素的值和下標(biāo)

? 4. 根據(jù)arr產(chǎn)生一個新數(shù)組,要求每個元素都比原來大10

? 5. 根據(jù)arr產(chǎn)生一個新數(shù)組, 返回的每個元素要大于4

? */

? var arr = [2,4,3,1,2,6,5,4];

? console.log(arr.indexOf(4));

? console.log(arr.lastIndexOf(4));

? arr.forEach(function(item, index){

? ? console.log(item, index);

? })

? var arr1 = arr.map(function(item, index) {

? ? return item + 10;

? });

? console.log(arr1);

? var arr2 = arr.filter(function(item, index){

? ? return item > 3;

? });

? console.log(arr, arr2);

</script>

</body>

</html>



<!DOCTYPE html>

<html lang="en">

<head>

? <meta charset="UTF-8">

? <title>05_Function擴(kuò)展</title>

</head>

<body>

<!--

1. Function.prototype.bind(obj) :

? * 作用: 將函數(shù)內(nèi)的this綁定為obj, 并將函數(shù)返回

2. 面試題: 區(qū)別bind()與call()和apply()?

? * 都能指定函數(shù)中的this

? * call()/apply()是立即調(diào)用函數(shù)

? * bind()是將函數(shù)返回

-->

<script type="text/javascript">

var obj = {username: 'kobe'};

/*function foo(){

console.log(this);

}*/

function foo(data){

console.log(this, data);

}

// foo();

// foo.call(obj);

// foo.apply(obj);

//傳入?yún)?shù)的形式

// foo.call(obj, 33);//直接從第二個參數(shù)開始,依次傳入

// foo.apply(obj, [33]);//第二參數(shù)必須是數(shù)組叠荠,傳入的參數(shù)放在數(shù)組里

//bind的特點(diǎn):綁定完this不會立即調(diào)用當(dāng)前的函數(shù)匿沛,而是將函數(shù)返回

/*var bar = foo.bind(obj);

console.log(bar);

bar();*/

//bind傳參的方式同call一樣

foo.bind(obj, 33)();

setTimeout(function(){

console.log(this);

}.bind(obj), 1000);

</script>

</body>

</html>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市榛鼎,隨后出現(xiàn)的幾起案子逃呼,更是在濱河造成了極大的恐慌,老刑警劉巖者娱,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抡笼,死亡現(xiàn)場離奇詭異,居然都是意外死亡黄鳍,警方通過查閱死者的電腦和手機(jī)辙诞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門彪置,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人窃诉,你說我怎么就攤上這事〔任担” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長隙姿。 經(jīng)常有香客問我,道長厂捞,這世上最難降的妖魔是什么输玷? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮靡馁,結(jié)果婚禮上欲鹏,老公的妹妹穿的比我還像新娘。我一直安慰自己臭墨,他們只是感情好赔嚎,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著裙犹,像睡著了一般尽狠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上叶圃,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天袄膏,我揣著相機(jī)與錄音,去河邊找鬼掺冠。 笑死沉馆,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的德崭。 我是一名探鬼主播斥黑,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼眉厨!你這毒婦竟也來了锌奴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤憾股,失蹤者是張志新(化名)和其女友劉穎鹿蜀,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體服球,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡茴恰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了斩熊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片往枣。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出分冈,到底是詐尸還是另有隱情圾另,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布丈秩,位于F島的核電站盯捌,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蘑秽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一箫攀、第九天 我趴在偏房一處隱蔽的房頂上張望肠牲。 院中可真熱鬧,春花似錦靴跛、人聲如沸缀雳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肥印。三九已至,卻和暖如春绝葡,著一層夾襖步出監(jiān)牢的瞬間深碱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工藏畅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留敷硅,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓愉阎,卻偏偏與公主長得像绞蹦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子榜旦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355