com原生js函數(原生js函數有哪些)

  • 1、原生js方法怎麼實現的
  • 2、關於原生js中bind函數的簡單實現
  • 3、js中的常用函數
  • 4、原生js如何是什麼
  • 5、com組件如何非同步調用js函數?
  • 6、javascript的函數庫怎麼不用引入就可以直接使用呢 還有js提供的函數有哪些怎麼查

原生的JS函數或方法一般都是由運行環境提供,運行環境分多個。

1、瀏覽器,一般瀏覽器都是用系統API寫的,對WINDOWS,UNIX/LINUX系統是,C語言編寫,相應的js原生方法,用C語言實現;特例:MAC OS 與IOS由OBJECTIVE-C,SWIFT提供系統API,相應的js原生方法用OBJECTIVE-C或SWIFT實現。

2、adobe,C語言編寫依賴操作系統API,js原生方法由C語言或OBJECTIVE-C,SWIFT現;看運行目標平台。

3、node.js,mongodb,C語言實現,js原生方法由C語言實現。

4、微軟excel2010及以後版本,有可能C#或.net實現,具體不詳,js原生方法由C#或.net實現。

今天繼續研究了bind函數的實現,也知道了shim和polyfill的說法,現在總結一下,

if

(!Function.prototype.bind)

{

Function.prototype.bind

=

function

(oThis)

{

if

(typeof

this

!==

“function”)

{

//

closest

thing

possible

to

the

ECMAScript

5

internal

IsCallable

function

throw

new

TypeError(“Function.prototype.bind

what

is

trying

to

be

bound

is

not

callable”);

}

var

aArgs

=

Array.prototype.slice.call(arguments,

1),

fToBind

=

this,

fNOP

=

function

()

{},

fBound

=

function

()

{

return

fToBind.apply(this

instanceof

fNOP

oThis

?

this

:

oThis

||

window,

aArgs.concat(Array.prototype.slice.call(arguments)));

};

fNOP.prototype

=

this.prototype;

fBound.prototype

=

new

fNOP();

return

fBound;

};

}

這是官方文檔上的實現,我分二個方面來談我要說的東西,

第一個是參數,agruments的使用

var

aArgs

=

Array.prototype.slice.call(arguments,

1),這裡是將bind函數的參數數組取出來,第一個參數不要(就是不要oThis)也就是要被綁定方法的那個對象,第二個是

aArgs.concat(Array.prototype.slice.call(arguments)));

這裡是用了數組的方法,把參數插在參數數組後面,要注意,這個函數是要被return

出去然後執行的,他的參數數組是return出去的那個fBound函數的參數數組,所以上下兩個參數數組是不一樣的,有點像柯里化。

第二個是上下文,在其中上下文的變化比較難理解,bind函數主要就是為了綁定上下文來使用的

fToBind

=

this

這裡是保存了對象的上下文,緊接著下面的apply方法讓要被綁定的那個對象可以使用該上下文

fNOP.prototype

=

this.prototype;

fBound.prototype

=

new

fNOP();

這裡是以fNOP為中介把this.prototype這個原對象的屬性給fBound,確保fBound是在定義的時候的那個上下文裡面執行。本來

bound.prototype

=

self.prototype就可以將原屬性集成過來了,但是這樣兩個對象屬性都指向同一個地方,修改

bound.prototype

將會造成self.prototype

也發生改變,這樣並不是我們的本意。所以通過一個空函數

nop

做中轉,能有效的防止這種情況的發生。

以上這篇關於原生js中bind函數的簡單實現就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

下面介紹全頁面刷新方法:有時候可能會用到

window.location.reload()刷新當前頁面.

parent.location.reload()刷新父親對象(用於框架)

opener.location.reload()刷新父窗口對象(用於單開窗口)

top.location.reload()刷新最頂端對象(用於多開窗口)

下面再介紹一些javascript基本函數 

1.document.write(」”);為 輸出語句 

2.js中的注釋為// 

3.傳統的html文檔順序是:document-html-(head,body) 

4.一個瀏覽器窗口中的dom順序是:window-(navigator,screen,history,location,document) 

5.得到表單中元素的名稱和值:document.getelementbyid(」表單中元素的id號」).name(或value) 

6.一個小寫轉大寫的js: document.getelementbyid(」output」).value = document.getelementbyid (」input」).value.touppercase(); 

7.js中的值類型:string,number,boolean,null,object,function 

8.js中的字元型轉換成數值型:parseint(),parsefloat() 

9.js中的數字轉換成字元型:(」”+變數) 

10.js中的取字元串長度是:(length) 

11.js中的字元與字元相連接使用+號. 

12.js中的比較操作符有:==等於,!=不等於,,=,.= 

13.js中聲明變數使用:var來進行聲明 

14.js中的判斷語句結構:if(condition){}else{} 

15.js中的循環結構:for([initial expression];[condition];[upadte expression]) {inside loop} 

16.循環中止的命令是:break 

17.js中的函數定義:function functionname([parameter],…){statement[s]} 

18.當文件中出現多個form表單時.可以用document.forms[0],document.forms[1]來代替. 

19.窗口:打開窗口window.open(), 關閉一個窗口:window.close(), 窗口本身:self 

20.狀態欄的設置:window.status=」字元」; 

21.彈出提示信息:window.alert(」字元」); 

22.彈出確認框:window.confirm(); 

23.彈出輸入提示框:window.prompt(); 

24.指定當前顯示鏈接的位置:window.location.href=」url」 

25.取出窗體中的所有表單的數量:document.forms.length 

26.關閉文檔的輸出流:document.close(); 

27.字元串追加連接符:+= 

28.創建一個文檔元素:document.createelement(),document.createtextnode() 

29.得到元素的方法:document.getelementbyid() 

49.引用一個文件式的js: 

50.指定在不支持腳本的瀏覽器顯示的html: 

51.當超鏈和onclick事件都有時,則老版本的瀏覽器轉向a.html,否則轉向b.html.例: dfsadf  

52.js 的內建對象 有:array,boolean,date,error,evalerror,function,math,number,object,rangeerror,referenceerror,regexp,string,syntaxerror,typeerror,urierror 

53.js中的換行:/n 

54.窗口全屏大小:function fullscreen(){ this.moveto(0,0);this.outerwidth=screen.availwidth;this.outerheight=screen.availheight;}window.maximize=fullscreen; 

55.js中的all代表其下層的全部元素 

56.js中的焦點順序:document.getelementbyid(」表單元素」).tabindex = 1 

 57.innerhtml的值是表單元素的值:如how are you,則innerhtml的值就是:how are you

58.innertext的值和上面的一樣,只不過不會把em這種標記顯示出來. 

59.contenteditable可設置元素是否可被修改,iscontenteditable返回是否可修改的狀態. 

60.isdisabled判斷是否為禁止狀態.disabled設置禁止狀態 

61.length取得長度,返回整型數值 

62.addbehavior()是一種js調用的外部函數文件其擴展名為.htc 

63.window.focus()使當前的窗口在所有窗口之前. 

64.blur()指失去焦點.與focus()相反. 

65.select()指元素為選中狀態. 

66.防止用戶對文本框中輸入文本:onfocus=」this.blur()」 

67.取出該元素在頁面中出現的數量:document.all.tags(」div(或其它html標記符)」).length 

68.js中分為兩種窗體輸出:模態和非模態.window.showmodaldialog(),window.showmodeless() 

69.狀態欄文字的設置:window.status=『文字』,默認的狀態欄文字設置:window.defaultstatus = 『文字.』; 

70.添加到收藏夾:external.addfavorite(」」,」google」); 

71.js中遇到腳本錯誤時不做任何操作:window.onerror = donothing; 指定錯誤句柄的語法為:window.onerror = handleerror; 

72.js中指定當前打開窗口的父窗口:window.opener,支持opener.opener…的多重繼續. 

73.js中的self指的是當前的窗口 

74.js中狀態欄顯示內容:window.status=」內容」 

75.js中的top指的是框架集中最頂層的框架 

76.js中關閉當前的窗口:window.close(); 

77.js中提出是否確認的框:if(confirm(」are you sure?」)){alert(」ok」);}else{alert(」not ok」);} 

78.js中的窗口重定向:window.navigate(」」); 

79.js中的列印:window.print() 

80.js中的提示輸入框:window.prompt(」message」,」defaultreply」); 

81.js中的窗口滾動條:window.scroll(x,y) 

82.js中的窗口滾動到位置:window.scrollby 

83.js中設置時間間隔:setinterval(」expr」,msecdelay)或setinterval(funcref,msecdelay)或settimeout 

84.js中的模態顯示在ie4+行,在nn中不行:showmodaldialog(」url」[,arguments][,features]); 

85.js中的退出之前使用的句柄:function verifyclose(){event.returnvalue=」we really like you and hope you will stay longer.」;}}   window.onbeforeunload=verifyclose; 

86.當窗體第一次調用時使用的文件句柄:onload() 

87.當窗體關閉時調用的文件句柄:onunload() 

88.window.location的屬性: protocol(http:),hostname(),port(80),host(),pathname(」/a/a.html」),hash(」#giantgizmo」,指跳轉到相應的錨記),href(全部的信息) 

89.window.location.reload()刷新當前頁面. 

89-1.parent.location.reload()刷新父親對象(用於框架) 

89-2.opener.location.reload()刷新父窗口對象(用於單開窗口) 

89-3.top.location.reload()刷新最頂端對象(用於多開窗口) 

90.window.history.back()返回上一頁,window.history.forward()返回下一頁,window.history.go(返回第幾頁,也可以使用訪問過的url) 

91.document.write()不換行的輸出,document.writeln()換行輸出 

92.document.body.nowrap=true;防止鏈接文字折行. 

93.變數名.charat(第幾位),取該變數的第幾位的字元. 

94.」abc」.charcodeat(第幾個),返回第幾個字元的ascii碼值. 

95.字元串連接:string.concat(string2),或用+=進行連接 

96.變數.indexof(」字元」,起始位置),返回第一個出現的位置(從0開始計算) 

97.string.lastindexof(searchstring[,startindex])最後一次出現的位置. 

98.string.match(regexpression),判斷字元是否匹配. 

99.string.replace(regexpression,replacestring)替換現有字元串. 

100.string.split(分隔符)返回一個數組存儲值. 

101.string.substr(start[,length])取從第幾位到指定長度的字元串. 

102.string.tolowercase()使字元串全部變為小寫. 

103.string.touppercase()使全部字元變為大寫. 

104.parseint(string[,radix(代表進位)])強制轉換成整型. 

105.parsefloat(string[,radix])強制轉換成浮點型. 

106.isnan(變數):測試是否為數值型. 

107.定義常量的關鍵字:const,定義變數的關鍵字:var 

原生態js是指遵循ECMAscript標準的javascript,不同於微軟的jscript也不依賴於任何框架,依託於瀏覽器標準引擎的腳本語言,jquery是在原生態的js上集成的框架資源,使用jquery並不代表代碼就不是你寫的,區別在於使用jquery只是使用了它的語法,更利於兼容以及實現,jquery已經將常規的js兼容問題解決,所以使用起來出現不兼容的情況會更少,更利於開發,但同時,要使用jquery等框架也需要去學習相關的語法,擁有js基礎的同學學習jquery時會發現很輕鬆,在使用時也會發現很方便。

//初始化創建線程 STDMETHODIMP CJSCallBack::Initialize(void) { // TODO: 在此添加實現代碼 DWORD dThreadId; m_hThreadHandle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)CallJspFunctionThread, this, 0, dThreadId); return S_OK; } //線程函數 UINT CJSCallBack::CallJspFunctionThread(LPVOID param) { CJSCallBack* pCallBack = (CJSCallBack*)param; while(m_bRunThread) { while(m_bCallJspFunc) { pCallBack-CallJsFunction(); m_bCallJspFunc = FALSE; } Sleep(1); } return 0; } //設置回調函數 STDMETHODIMP CJSCallBack::SetJsCallbackFunc(VARIANT scriptCallback) { // TODO: 在此添加實現代碼 if (scriptCallback.vt == VT_DISPATCH) { m_spCallback = scriptCallback.pdispVal; } return S_OK; } //調用回調函數 void CJSCallBack::CallJsFunction() { CComVariant avarParams[1]; avarParams[0] = m_szDisplay; //指定回調函數的參數 DISPPARAMS params = { avarParams, NULL, 1, 0 }; if(m_spCallback) { HRESULT hr = m_spCallback-Invoke(0, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, params, NULL, NULL, NULL); } } //觸發調用回調函數 STDMETHODIMP CJSCallBack::Print(BSTR bstrToPrint, LONG lWait) { // TODO: 在此添加實現代碼 _bstr_t bsPrint = bstrToPrint; char* szPrint = bsPrint; Sleep(500); m_szDisplay = “Succeed to Print”; HRESULT hr = CallPrintFunction(szPrint); if ( FAILED(hr) ) { m_szDisplay = “Failed to Print”; } switch (lWait) { case 0: CallJsFunction(); break; case 1: { m_bCallJspFunc = TRUE; Sleep(30); } break; default: break; } return S_OK; }function TestCallBack() { var obj = new ActiveXObject(“CallBackForJs.JSCallBack.1”); var result = obj.Initialize(); result = obj.SetJsCallbackFunc(printMsg); obj.Print(“abc”,1); obj.UnInitialize(); } function printMsg(msg) { alert(msg); }

你說的js的函數庫是指的js的內置對象和方法吧,既然是內置的那麼就是js默認實現的了,至於有什麼自己好好學習一下,比如常用的String,Date,Math,RegExp,等等對象,還有Dom對象啊,要了解js就先從這些基本的開始

原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/126624.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
簡單一點的頭像簡單一點
上一篇 2024-10-03 23:09
下一篇 2024-10-03 23:09

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字元串操作中,capitalize函數常常被用到,這個函數可以使字元串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 單片機列印函數

    單片機列印是指通過串口或並口將一些數據列印到終端設備上。在單片機應用中,列印非常重要。正確的列印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的列印數據可以幫助我們快速…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • Python 常用資料庫有哪些?

    在Python編程中,資料庫是不可或缺的一部分。隨著互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的資料庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python通配符有哪些

    Python通配符是一種表示字元串中模糊匹配的有效工具,用於匹配與具有特定模式匹配的字元串。Python中主要的通配符有:*,?,[]和{}。 一、星號通配符 * 在Python中…

    編程 2025-04-29
  • Python實現計算階乘的函數

    本文將介紹如何使用Python定義函數fact(n),計算n的階乘。 一、什麼是階乘 階乘指從1乘到指定數之間所有整數的乘積。如:5! = 5 * 4 * 3 * 2 * 1 = …

    編程 2025-04-29

發表回復

登錄後才能評論