當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
《前端JavaScript重点》学习笔记 1-5
生活随笔
收集整理的這篇文章主要介紹了
《前端JavaScript重点》学习笔记 1-5
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
JS三座大山:原型和原型連、作用域和閉包、異步和單線程 第一篇-----變量類型和計算 ? 參考:https://www.jianshu.com/p/8cb184b26ed1 題目: 1.JS中使用typeof能得到哪些類型 2.何時使用'===',何時使用'==' 3.JS有哪些內置函數 4.JS變量按照存儲方式分為哪些類型,并描述其特點 5.如何理解JSON
知識點#####
- 值類型vs引用類型
- typerof運算符詳解
- 字符串拼接
- if語句
- 邏輯運算符
- undefined 和 is not defined 不同,后者是報錯,前者是未定義
解題#####
1.JS中使用typeof能得到哪些類型 undefined,string,number,boolean,object,function 2.何時使用'===',何時使用'==' //僅有這種情況使用'== 'if(obj.a==null){ //此時條件相當于obj.a===null||obj.a===undefined,簡寫形式 //這是jQuery源碼中推薦的寫法 } 除此之外,其它情況均建議使用'===' 3.JS有哪些內置函數 Object,Array,Boolean,Number,String,Function,Date,RegExp,Error 4.JS變量按照存儲方式分為哪些類型,并描述其特點 分為值類型和引用類型,值類型可以將數據分塊存儲在內存中,但是引用類型是多個變量共用一個內存塊,引用類型的賦值是指定了一個指針,并不是真正的值的拷貝,它們之間是會相互干預的。 5.如何理解JSON JSON是JS中的一個內置對象,也是一種數據格式 JSON.stringify({a:10,b:20})?//將對象轉換為字符串 JSON.parse('{"a":10,"b":20}')?//把字符串轉換為對象 第二篇-----原型與原型鏈 參考:https://www.jianshu.com/p/dc3015d68c46 題目 1.如何準確判斷一個變量是數組類型 2.寫一個原型鏈繼承的例子 3.描述new一個對象的過程 4.zepto框架中如何使用原型鏈 知識點- 構造函數
- 構造函數-擴展
- 原型規則和實例(熟記)
- 所有的引用類型都具有對象特性,即可自由擴展屬性(null除外)
- 所有引用類型都有一個__proto__(隱式原型屬性),屬性值是一個普通的對象
- 所有函數都有一個prototype (顯式原型屬性),屬性值也是一個普通的對象
- 所有引用類型的__proto__屬性值指向它的構造函數的prototype的屬性值
- 當試圖得到一個引用類型的某個屬性時,如果這個對象本身沒有這個屬性,那么會去它的__proto__(即它構造函數的prototype)中尋找
var obj={};obj.a=100;
var arr=[];arr.a=100;
function fn(){}
fn.a=100
console.log(obj.__proto__)
console.log(arr.__proto__)
console.log(fn.__proto__)
console.log(fn.prototype)
console.log(obj.__proto__===Object.prototype)?//true
- 原型鏈
- instanceof
用于判斷引用類型屬于哪個構造函數的方法
f instanceof Foo ?//true
解題#####
1.如何準確判斷一個變量是數組類型 使用instanceof ?(用于判斷引用類型屬于哪個構造函數的方法) var arr=[] arr instanceof Array?//true typeof arr?//object typeof無法準確判斷是否是數組 2.寫一個原型鏈繼承的例子 //簡單示例,比較low,下面有更貼近實戰的例子 //動物 function Animal(){ this.eat=function(){ console.log('Animal eat') } } //狗 function Dog(){ this.bark=function(){ console.log('Dog bark') } } Dog.prototype=new Animal() //哈士奇 var hashiqi=new Dog() //更貼近實戰的原型繼承實例 //封裝一個DOM查詢 function Elem(id){ this.elem=document.getElementById(id); } Elem.prototype.html = function(val){ if(val){ this.elem.innerHTML =val; } return this;???????????? } Elem.prototype.on=function(type,fn){ var elem=this.elem; elem.addEventListener(type,fn); return this; ??//鏈式操作 } var div1=new Elem('div1'); // console.log(div1.html()); // div1.html('<p>Hello</p>'); // div1.on('click',function(){ // ?? ? alert('clicked') //?}); div1.on('click',function(){ alert('clicked'); }).html('<p>鏈式操作</p>'); //在之前的函數中增加了return this,由div1調用時便會返回當前對象,即div1,便可以實現鏈式操作 3.描述new一個對象的過程 function Foo(name,age){ // this={} this.name=name; this.age=age; this.class='class-1'; //return this;??//默認有這一行 } var f=new Foo('zhangsan',20); //var f1=new Foo('lisi',22); //創建多個對象 過程: 創建一個新對象??//{} this指向這個新對象 this={} 執行代碼,即對this賦值 this.xxx=xxx 返回this?return this 4.zepto框架如何使用原型鏈 第三篇-----作用域和閉包 題目 1.說一下對變量提升的理解 2.說明this幾種不同的使用場景 3.創建10個<a>標簽,點擊時彈出對應序號 4.如何理解作用域 5.實際開發中閉包的應用知識點#####
- 執行上下文
- this
- - 作用域
- ?作用域鏈
- - 閉包
- 作為構造函數執行
- 作為對象屬性執行
- 作為普通函數執行
- call apply bind
第四篇 ??異步和單線程
題目
1.同步和異步的區別是什么?分別舉一個同步和異步的例子 2.一個關于setTimeout的筆試題 3.前端使用異步的場景有哪些知識點#####
- 什么是異步(對比同步)
知識點#####
- 日期
- Math
- 數組API
- 對象API
解題#####
1.獲取2017-07-13格式的日期 function formatDate(dt){ if(!dt){ dt=new Date(); } var year=dt.getFullYear() var month=dt.getMonth()+1 var date=dt.getDate() if(month<10){ month='0'+month } if(date<10){ ??? ??date='0'+date } return year+'-'+month+'-'+date } var dt dt=new Date() alert(formatDate(dt)) 2.獲取隨機數,要求是長度一致的字符串格式 var random=Math.random() var random=random+'0000000000'?//10個0 var random=random.slice(0,10) //slice() 方法返回一個從0開始到1結束(不包括結束)選擇的數組的一部分,淺拷貝到一個新數組對象。原始數組不會被修改console.log(random); 3.寫一個能遍歷對象和數組的通用forEach函數 function myForEach(obj,fn){ var key if(obj?instanceof Array){ //判斷是否為數組 obj.forEach(function(item,index){ fn(index,item) }) }else{ //不是數組就是對象 for(key in obj){ fn(key,obj[key]) } ?} } var arr=[1,2,3] //參數順序換了,為了和對象的遍歷格式一致 myForEach(arr,function(index,item){ console.log(index,item); }) var obj={x:100,y:200} myForEach(obj,function(key,value){ console.log(key,value); }) //0 1 //1 2 //2 3 //x 100 //y 200轉載于:https://www.cnblogs.com/morongwendao/p/9585052.html
總結
以上是生活随笔為你收集整理的《前端JavaScript重点》学习笔记 1-5的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centOS下lnamp安装
- 下一篇: Docker:单机编排工具docker-