數據是JavaScript中最常用的數據類型之一,它屬于對象中的內建對象。
專注于為中小企業提供網站設計制作、成都網站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業修武免費做網站提供優質的服務。我們立足成都,凝聚了一批互聯網行業人才,有力地推動了上千家企業的穩健成長,幫助中小企業通過網站建設實現規模擴充和轉變。
JavaScript提供多個內建對象,比如String、Date、Array等等。對象只是帶有屬性和方法的特殊數據類型。就如java中有基本數據類型與對象數據類型,對象數據類型中除了存儲值以外,還存儲了其他屬性及方法,如:varmessage="HelloWorld!";varx=message。
運行模式
JavaScript是一種屬于網絡的高級腳本語言,已經被廣泛用于Web應用開發,常用來為網頁添加各式各樣的動態功能,為用戶提供更流暢美觀的瀏覽效果。通常JavaScript腳本是通過嵌入在HTML中來實現自身的功能的。
是一種解釋性腳本語言(代碼不進行預編譯)主要用來向HTML(標準通用標記語言下的一個應用)頁面添加交互行為。 可以直接嵌入HTML頁面,但寫成單獨的js文件有利于結構和行為的分離。
隨著互聯網編程開發技術的不斷發展,關于軟件編程的框架和庫的種類也在不斷的增加。
今天我們就一起來了解一下,常見的JavaScript編程開發都有哪些庫。
1、ReactJS(Star:59989,Fork:10992)React.js(React)是一個用來構建用戶界面的JavaScript庫,主要用于構建UI,很多人認為React是MVC中的V(視圖)。
React起源于Facebook的內部項目,用來架設Instagram的網站,并于2013年5月開源。
React擁有較高的性能,代碼邏輯非常簡單,越來越多的人已開始關注和使用它。
React特點:1.聲明式設計?React采用聲明范式,可以輕松描述應用。
2.高效?React通過對DOM的模擬,大限度地減少與DOM的交互。
3.靈活?React可以與已知的庫或框架很好地配合。
4.JSX?JSX是JavaScript語法的擴展。
React開發不一定使用JSX,但我們建議使用它。
5.組件?通過React構建組件,使得代碼更加容易得到復用,能夠很好的應用在大項目的開發中。
6.單向響應的數據流?React實現了單向響應的數據流,從而減少了重復代碼,這也是它為什么比傳統數據綁定更簡單。
2、AngularJS(Star:54769,Fork:27292)AngularJS(Angular.JS)是一組用來開發Web頁面的框架、模板以及數據綁定和豐富UI組件。
它支持整個開發進程,提供Web應用的架構,無需進行手工DOM操作。
AngularJS很小,只有60K,兼容主流瀏覽器,與jQuery配合良好。
3、Vue.js(Star:43608,Fork:5493)Vue.js是構建Web界面的JavaScript庫,提供數據驅動的組件,還有簡單靈活的API,使得MVVM更簡單。
主要特性:可擴展的數據綁定將普通的JS對象作為model簡潔明了的API組件化UI構建配合別的庫使用4、jQuery(Star:43432,Fork:12117)JQuery是輕量級的js庫(壓縮后只有21k),它兼容CSS3,還兼容各種瀏覽器(IE6.0+,FF1.5+,Safari2.0+,Opera9.0+)。
jQuery使用戶能更方便地處理HTMLdocuments、events、實現動畫效果,并且方便地為網站提供AJAX交互。
jQuery還有一個比較大的優勢是,它的文檔說明很全,而且各種應用也說得很詳細,同時還有許多成熟的插件可供選擇。
武漢IT培訓認為jQuery能夠使用戶的html頁保持代碼和html內容分離,也就是說,不用再在html里面插入一堆js來調用命令了,只需定義id即可。
如下:
==,===相等運算符
!=,!==不等式運算符
= 賦值運算符
,||,!邏輯運算符
() 分組運算符
, 逗號運算符
?…: 條件(三元)運算符
|,,^,~按位OR,AND,XOR和NOT運算符
,, 位移位運算符
+,-運算符
++,--前/后增/減運算符
void operator
var x = function()? vs function x()函數聲明語法
= 箭頭函數表達式語法
(function(){...})()IIFE (立即調用函數表達式)
someFunction()() 返回其他功能的功能
[],Array()數組符號
/.../ -正則表達式文字
$在正則表達式替換模式:$$,$,$,$’,$n`
{key: value} 對象文字語法:
可選的鏈接運算符(foo?.bar?.baz):
空位合并運算符(??)
function*,yield,yield* Declaring variables:
var,let,const變量聲明:
this 關鍵詞:
:: 綁定運算符:
new operator
delete operator
label: 標簽
+=Operator
...iter 傳播語法/ Rest參數
| Operator
** Power Operator
今天小編要跟大家分享的文章是關于Javascript繼承的常用4種方法。相信很多學習web前端開發技術的小伙伴在學習前端開發的javascript部分的時候,在面向對象的部分就很難走下去了,主要的原因還是邏輯更加復雜了,需要理解的內容比直觀的開發布局難一點。
在面向對象編程里,封裝和繼承是比較重要的,這中間,繼承是相對而言比較難理解的,因為javascript的繼承方式比較多,也有不同的優缺點。今天小編為大家帶來這篇文章就是來和大家一起說一說Javascript繼承的常用4種方法,希望能夠對你有所幫助。
1、原型鏈繼承
核心:將父類的實例作為子類的原型
缺點:父類新增原型方法/原型屬性,子類都能訪問到,父類一變其它的都變了
2、構造繼承
基本思想
借用構造函數的基本思想就是利用call或者apply把父類中通過this指定的屬性和方法復制(借用)到子類創建的實例中。
因為this對象是在運行時基于函數的執行環境綁定的。也就是說,在全局中,this等于window,而當函數被作為某個對象的方法調用時,this等于那個對象。
call、apply方法可將一個函數的對象上下文從初始的上下文改變為由thisObj指定的新對象。
所以,這個借用構造函數就是,new對象的時候(new創建的時候,this指向創建的這個實例),創建了一個新的實例對象,并且執行Parent里面的代碼,而Parent里面用call調用了Person,也就是說把this指向改成了指向新的實例,所以就會把Person里面的this相關屬性和方法賦值到新的實例上,而不是賦值到Person上面,所以所有實例中就擁有了父類定義的這些this的屬性和方法。
因為屬性是綁定到this上面的,所以調用的時候才賦到相應的實例中,各個實例的值就不會互相影響了。
核心:使用父類的構造函數來增強子類實例,等于是復制父類的實例屬性給子類(沒用到原型)
缺點:方法都在構造函數中定義,
只能繼承父類的實例屬性和方法,不能繼承原型屬性/方法,無法實現函數復用,每個子類都有父類實例函數的副本,影響性能
3、組合繼承
組合繼承(所有的實例都能擁有自己的屬性,并且可以使用相同的方法,組合繼承避免了原型鏈和借用構造函數的缺陷,結合了兩個的優點,是最常用的繼承方式)
核心:通過調用父類構造,繼承父類的屬性并保留傳參的優點,然后再通過將父類實例作為子類原型,實現函數復用
缺點:調用了兩次父類構造函數,生成了兩份實例(子類實例將子類原型上的那份屏蔽了)
4、寄生組合繼承
核心:通過寄生方式,砍掉父類的實例屬性,這樣,在調用兩次父類的構造的時候,就不會初始化兩次實例方法/屬性,避免的組合繼承的缺點
缺點:堪稱完美,但實現較為復雜
以上就是小編今天為大家分享的關于web前端學習之Javascript繼承的常用4種方法的文章,希望本篇文章能夠對正在學習web前端技術的小伙伴們有所幫助。想要了解更多web前端知識記得關注北大青鳥web培訓官網。
文章轉載自公眾號:前端研究所
1) 使用!!將變量轉換成布爾類型
有時,我們需要檢查一些變量是否存在,或者它是否具有有效值,從而將它們的值視為true。對于做這樣的檢查,你可以使用||(雙重否定運算符),它能自動將任何類型的數據轉換為布爾值,只有這些變量才會返回false:0,null,"",undefined或NaN,其他的都返回true。我們來看看這個簡單的例子:
function Account(cash) {
this.cash = cash;
this.hasMoney = !!cash;
}
var account = new Account(100.50);
console.log(account.cash); // 100.50
console.log(account.hasMoney); // true
var emptyAccount = new Account(0);
console.log(emptyAccount.cash); // 0
console.log(emptyAccount.hasMoney); // false
在這個例子中,如果account.cash的值大于零,則account.hasMoney的值就是true。
2) 使用+將變量轉換成數字
這個轉換超級簡單,但它只適用于數字字符串,不然就會返回NaN(不是數字)??纯催@個例子:
function toNumber(strNumber) {
return +strNumber;
}
console.log(toNumber("1234")); // 1234
console.log(toNumber("ACB")); // NaN
這個轉換操作也可以作用于Date,在這種情況下,它將返回時間戳:
console.log(+new Date()) // 1461288164385
3) 短路條件
如果你看到過這種類似的代碼:
if (conected) {
login();
}
那么你可以在這兩個變量之間使用(AND運算符)來縮短代碼。例如,前面的代碼可以縮減到一行:
conected login();
你也可以用這種方法來檢查對象中是否存在某些屬性或函數。類似于以下代碼:
user user.login();
4) 使用||設置默認值
在ES6中有默認參數這個功能。為了在舊版瀏覽器中模擬此功能,你可以使用||(OR運算符),并把默認值作為它的第二個參數。如果第一個參數返回false,那么第二個參數將會被作為默認值返回??聪逻@個例子:
function User(name, age) {
this.name = name || "Oliver Queen";
this.age = age || 27;
}
var user1 = new User();
console.log(user1.name); // Oliver Queen
console.log(user1.age); // 27
var user2 = new User("Barry Allen", 25);
console.log(user2.name); // Barry Allen
console.log(user2.age); // 25
5) 在循環中緩存array.length
這個技巧非常簡單,并且在循環處理大數組時能夠避免對性能造成巨大的影響?;旧蠋缀趺總€人都是這樣使用for來循環遍歷一個數組的:
for (var i = 0; i array.length; i++) {
console.log(array[i]);
}
如果你使用較小的數組,那還好,但是如果處理大數組,則此代碼將在每個循環里重復計算數組的大小,這會產生一定的延遲。為了避免這種情況,你可以在變量中緩存array.length,以便在循環中每次都使用緩存來代替array.length:
var length = array.length;
for (var i = 0; i length; i++) {
console.log(array[i]);
}
為了更簡潔,可以這么寫:
for (var i = 0, length = array.length; i length; i++) {
console.log(array[i]);
}
6) 檢測對象中的屬性
當你需要檢查某些屬性是否存在,避免運行未定義的函數或屬性時,這個技巧非常有用。如果你打算編寫跨瀏覽器代碼,你也可能會用到這個技術。例如,我們假設你需要編寫與舊版Internet Explorer 6兼容的代碼,并且想要使用document.querySelector()來通過ID獲取某些元素。 但是,在現代瀏覽器中,這個函數不存在。所以,要檢查這個函數是否存在,你可以使用in運算符??聪逻@個例子:
if ('querySelector' in document) {
document.querySelector("#id");
} else {
document.getElementById("id");
}
在這種情況下,如果在document中沒有querySelector函數,它就會使用document.getElementById()作為代替。
JavaScript中常用的運算符及其使用方法
JavaScript中常用的運算符及其使用方法如下:
類型
-(負值),例如:-5。
*(乘法),例如:2*4,得8。
/(除法),例如:10/2,得5。
%(取余),例如:9%2,余數為1。
+(加法),例如:1+2,得3。
-(減法),例如:9-8,得1。
算術運算符
|(按位或運算),例如:5|3,得7。
(左移),例如:53,得40。
(右移),例如:51,得2。
~(取補),例如:~5 ,得6。
++(遞加),例如: a=5,a++,得a=6。
--(遞減),例如: a=5,a--,得a=4。
字符運算符
+(字符串連接),例如:“a”+“b”,得ab。
==(等于),例如:1==2,為Flase。
!=(不等于),例如:3!=4,為True。
比較運算符
(小于),例如:76,為Flase。
(大于),例如:109,為True。
=(小于等于),例如:6=9,為True。
=(大于等于),例如:3=6,為Flase。
邏輯算符
!(邏輯非),例如:!Flase,為True。
(邏輯與),例如:FlaseTrue,為Flase。
||(邏輯或),例如:Flase||True,為True。
^(邏輯異或),例如:Flase^True,為True。