JS無法自主控制線程,即便NODE.JS,其本身也是C語言的實現(xiàn),只是使用JS間接調(diào)用C語言去執(zhí)行而已。因此JS得觸角,是無法觸及高性能應(yīng)用的。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),措勤企業(yè)網(wǎng)站建設(shè),措勤品牌網(wǎng)站建設(shè),網(wǎng)站定制,措勤網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,措勤網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
從語言本身,與其認(rèn)為JS可以一統(tǒng)天下,C#一統(tǒng)天下的可能性似乎更高一些。由于Unity3D的存在,可以一次開發(fā),便發(fā)布到21種平臺。windows,linux,mac自然不在話下,還包括PS4,3DS,SWITCH,XBOX等游戲機(jī)。。各種VR,AR設(shè)備,以及WebGL。。只要WebGL逐漸普及,或H5的性能進(jìn)一步提升,Unity便可直接生成前端頁面。。且性能非常棒。。連3D大型游戲都可以流暢運行。。
簡單說,JS的問題在語言本身,先天的缺陷,導(dǎo)致其很難通過后天的修復(fù)來彌補(bǔ)。除非徹底改造成編譯型靜態(tài)語言。。而像ES6那樣的小修小補(bǔ),是根本無法從本質(zhì)上改良JS的。。也許要等到ES10以上的版本,JS才能真正勝任高性能開發(fā)
而C#本身性能就很棒,問題在于前端平臺的性能不足,目前的H5性能依然無法滿足C#的需要,而WEBGL普及度偏低。。顯然C#要實現(xiàn)“無所不能”,比JS容易的多。只要前端平臺的性能再稍加提升,也許僅僅需要HTML5.2或HTML5.3,或者各大瀏覽器都默認(rèn)開啟WEBGL,這一切就可能成為現(xiàn)實。
歸根結(jié)底,JS也許有一天可以"無所不能",但永遠(yuǎn)無法涉及高性能的應(yīng)用,而到時候“無所不能”的語言,也不僅僅只有JS一種....未來的WEB前端,將是由引擎直接生成webassembly,并不是靠敲JS實現(xiàn)的。
面向?qū)ο蠓浅V匾?,非常重要,非常重要,重要的事情說三遍。。。
但現(xiàn)在JS里的所謂面向?qū)ο蟛恢匾?。。。因為JS根本不是面向?qū)ο蟮恼Z言。。。所以那所謂的“面向?qū)ο蟆保鋵嵤羌俚?。。所有不面向?qū)ο蟮恼Z言,都是垃圾語言。。。沒錯,JS就是個垃圾語言。。。所以面向?qū)ο蟮牟糠?,你需要靠學(xué)習(xí)其他語言來實現(xiàn)。。。比如JAVA,C#,C++都可以。。。。動態(tài)語言的面向?qū)ο笕羌俚?,比如PYTHON和RUBY。。。。一定要學(xué)一門強(qiáng)類型語言,你才能真正學(xué)會面向?qū)ο?。?!?/p>
JS也正在計劃改版。。。且一直在進(jìn)行中。。。在不久的將來,JS會被改造成一種強(qiáng)類型,面向?qū)ο蟮恼Z言。。。?;咀兂梢粋€山寨版的C#。。。當(dāng)然也有人說像山寨JAVA。。。但客觀講,確實更像山寨C#。。。這被稱為ECMAScript 6或者JavaScript2.0
到時候的面向?qū)ο?,就會變得非常重要,非常重要,非常重要。。。按照今天的?biāo)準(zhǔn)。。不理解面向?qū)ο螅静荒芩銜幊?。。。?!?/p>
從學(xué)習(xí)時間,和內(nèi)容廣度來看。。。。一個完全零基礎(chǔ)的小白,學(xué)會面向過程那點東西,假如需要一個月。。那學(xué)面向?qū)ο蟮牟糠?,至少需?年。。。十倍以上的差距。。。用熟面向?qū)ο?,則至少需要2-3年。。。所編寫出的程序,也會從KB級別,上升到MB級別。。。。
javaScript 為我們專門提供了一些函數(shù)方法來幫我們更優(yōu)雅的處理函數(shù)內(nèi)部 this 的指向問題,常用的有 bind()、call()、apply() 三種方法
call() 方法調(diào)用一個對象。簡單理解為調(diào)用函數(shù)的方式,但是它可以改變函數(shù)的 this 指向。
fun.call(thisArg, arg1, arg2, ...)
thisArg:在 fun 函數(shù)運行時指定的 this 值
arg1,arg2:傳遞的其他參數(shù)
返回值就是函數(shù)的返回值,因為它就是調(diào)用函數(shù)
因此當(dāng)我們想改變 this 指向,同時想調(diào)用這個函數(shù)的時候,可以使用 call,比如繼承
fun.apply(thisArg, [argsArray])
thisArg:在fun函數(shù)運行時指定的 this 值
argsArray:傳遞的值,必須包含在數(shù)組里面
apply 主要跟數(shù)組有關(guān)系,比如使用 Math.max() 求數(shù)組的最大值
bind() 方法不會調(diào)用函數(shù)。但是能改變函數(shù)內(nèi)部this 指向
fun.bind(thisArg, arg1, arg2, ...)
thisArg:在 fun 函數(shù)運行時指定的 this 值
arg1,arg2:傳遞的其他參數(shù)
返回由指定的 this 值和初始化參數(shù)改造的原函數(shù)拷貝
因此當(dāng)我們只是想改變 this 指向,并且不想調(diào)用這個函數(shù)的時候,可以使用 bind
相同點:
都可以改變函數(shù)內(nèi)部的this指向.
區(qū)別點:
1.call 和 apply 會調(diào)用函數(shù), 并且改變函數(shù)內(nèi)部this指向.
2.call 和 apply 傳遞的參數(shù)不一樣, call 傳遞參數(shù) aru1, aru2..形式 apply 必須數(shù)組形式[arg]
3.bind 不會調(diào)用函數(shù), 可以改變函數(shù)內(nèi)部this指向.
主要應(yīng)用場景:
1.call 經(jīng)常做繼承.
2.apply 經(jīng)常跟數(shù)組有關(guān)系. 比如借助于數(shù)學(xué)對象實現(xiàn)數(shù)組最大值最小值
3.bind 不調(diào)用函數(shù),但是還想改變this指向. 比如改變定時器內(nèi)部的this指向。
Javascript是最流行的腳本語言之一,也是Web的主要技術(shù)之一,這樣的優(yōu)勢導(dǎo)致它在嵌入式領(lǐng)域也有一定的作用
飛利浦出過一套 Pronto 智能中控設(shè)備系列,可以通過編寫代碼自定義界面和邏輯,控制繼電器、串口、紅外等設(shè)備,適用于家庭和辦公室自動化控制。
控
制設(shè)備分為中控主機(jī)和控制板(即帶彩色觸摸屏的遙控器),本身是嵌入式系統(tǒng),但控制板中存儲的自定義邏輯代碼就是使用改造過的Javascript腳本規(guī)
范。為家庭或安裝好被控制的設(shè)備以后,只需通過必要連線或局域網(wǎng)將中控主機(jī)與被控設(shè)備連通,再將電腦上編寫好的腳本和配置文件通過USB口傳到控制板上,
就可以使用了。電腦端編輯是半圖形化半文本式的界面(類似Visual Studio和 Xcode
的使用),代碼編寫又不難,因此上手非常容易。編寫界面和最終的控制板使用體驗都很好。
“ProntoScript
是一種基于 JavaScript 的軟件工具,它使安裝人員能夠創(chuàng)建動態(tài)的雙向用戶界面,利用全圖形的靈活性對 RS232 或 IP
進(jìn)行系統(tǒng)控制。該工具集成在 ProntoEdit Professional 軟件中。與 Pronto 合作伙伴預(yù)建的 ProntoScript
模塊可通過網(wǎng)站獲得。對于典型安裝,您可以選擇使用標(biāo)準(zhǔn)安裝參考文件,重新分配各個組件即可。更高級的 JavaScript
編程人員能夠創(chuàng)建他們自己的 ProntoScript 模塊,以便進(jìn)行全面的系統(tǒng)操作和反饋。”
可惜不知為何沒有后續(xù)研發(fā)新產(chǎn)品。
javascript onmouseover和onmouseout事件
onmouseover和onmouseout鼠標(biāo)移入移出時觸發(fā)的事件:
onmouseover 用戶鼠標(biāo)移入元素時觸發(fā)的事件。并執(zhí)行onmouseover調(diào)用的函數(shù)。
onmouseout 用戶鼠標(biāo)移開元素時觸發(fā)的事件。并執(zhí)行onmouseout調(diào)用的函數(shù)。
onmouseover和onmouseout 這兩個事件在javascript中較常用。
下面通過一個示例更深入了解這兩個事件的使用:
示例:鼠標(biāo)移入時,改變字體的背景色,移出時,還原默認(rèn)的背景色。
!DOCTYPE html
html
head
meta charset="utf-8" /
title鼠標(biāo)移入時,改變字體的背景色,移出時,還原默認(rèn)的背景色。/title
style
.xuexi{width:200px;height:120px;background:#abcdef;border:1px solid green;}
/style
script
function aixuexi(){
var woaixuexi=document.getElementById("woaixuexi");
woaixuexi.style.background="yellowgreen";
}
function xuexi(){
var xuexi=document.getElementById("woaixuexi");
xuexi.style.background="#abcdef";
}
/script
/head
body
div id="woaixuexi" onmouseover="aixuexi();" onmouseout="xuexi();" class="xuexi"/div
/body
/html