本篇文章帶給大家的內容是關於javaScript引用類型的詳細介紹(附範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
概念 : 引用類型是一種資料結構,用於將資料和功能組織在一起,也就是 類別;
物件為特殊的引用類型實例。新物件由new後加一個建構函式所建立的。
建構子:用於建立物件的函數。
例 : var person = new Object();
object為建構函數,為新物件提供預設屬性與方法。
1、object類型
//普通方法
var person = new Object(); person.name = "syr"; person.age = 22;
//物件字面量
var person = { name : "syr", age : 22, 5 : true //5自动转为"5" } * 数值属性名会自动转为字符串; * 对象字面量推荐只在属性名可读的情况下使用,也是向函数传递大量参数首选方式,必须使用命名参数,对象字面量封装多个可选参数。 * 访问对象一般用点表示法,js中也可以用方括号法,将要访问的属性以字符串的形式放进去。
範例: alert(person["name"]) ; // 等於person.name
* 方括号法主要优点是可以通过变量来访问属性。 * 点表示法属性名不能包含错误的自负或者保留字和关键字,但方括号法可以。 * 通常,除非必须使用变量来访问属性,否则推荐使用点表示法。
2、Array類型:
* 数组:数据的有序列表。
es中的陣列每一項都可以保存任何類型的數據,數組大小也可以動態調整。
方法一 : new可以省略; var colors = new Array(); 方法二 : 数组字面量 var colors = ["red","blue","green"];
與物件一樣,字面量不會呼叫Array建構子。
var colors = ["red","blue","green"]; colors[0] // 显示第一项 colors[2] = "black"; // 修改第二项 colors[3] = "brown" ; //增加第四项 colors.length = "black" ; 增加一项
length屬性可傳回數組的長度,可增加和移除數組的項。
* 检测数组 value instanceof Array // 判断是否为数组 Array.isArray(value) // isArray确定到底是不是数组,不管在哪个环境中创建 * 转换方法
所有物件都具有toLocalString()方法,後台呼叫tostring(),null和undefined傳回結果以空字串表示。
* 栈方法 : 后进先出(吃了吐)
push() : 接受任意數量參數,加到末尾;
pop() : 移除數組末尾一項。
* 队列方法 : 先进先出(吃了拉);
shift() : 前端移除項並傳回該項,長度減1;
unshift() : 前端推入一項;
* 重排序方法
reverse() : 逆序;
sort() : 順序;
比較的是字串,會自動轉為字串。
如 "10" 位於"5"的前面,因此應傳給sort一個比較函數。
function compare(value1,value2){ if(value1 value2){ return 1; }else{ return 0; } } value = [0,1,5,10,15];value.sort(value); //0,1,5,10,15 * 操作方法
concat()拼接 : 先把原數組複製一個,然後把參數加到末尾,原始數組不變。 slice(1,2) : 剪下:傳回參數1起始位置,參數2為結束位置,包前不包後,原數組不變。 solice() : 主要向數組中插入項目。 (陣列操作最主要的方法):
-刪除: 可刪除任意數量項,制定兩個參數: arg1位元要刪除的位置,arg2為要刪除的項數,範例:splice(0,2) :刪除前兩項;
-插入: 三個參數。起始位置,刪除項數和要插入的項,可在後面插入多個項。例 : solice(2,0,"red","green");從位置2插入"red"和"green".
-替換 : 同上,插入項不必與刪除項數相等。
注意: splice()會改變原始陣列;
* 位置方法
indexof() : 從頭尋找
lastIndexof() : 從未尋找
arg1表示要尋找的項,arg2為起始位置(可選參數),沒找到返回-1,比較時使用的是全等。
var number = [1,2,3,4,5,4,3,2,1]; number.indexof(4) ; //返回5 * 迭代方法
every();
filter();
forEach();
map();
* 归并方法
reduce() : 從頭
reduceRight ; 從尾
都會迭代數組所有項,建立一個最終返回項。
3、Date類型
var now = new Data(); date.parse("May 25,2004"); // 新建特定日期 * 继承: 重写了3个方法
toLocalString() : 瀏覽器設定日期;
toString();
valueof();
* 日期格式化方法:
-toDateString( ) : 特定格式顯示星期、月、日、年;
-toTimeString() : 時分秒,時區;
toLocalDateString() : 按地區顯示星期、月、日、年;
toLocalTimeString() : 時分秒;
toUTCString() : 特定格式顯示完整UTC日期,具體顯示會因瀏覽器而異。
4、RegExp類型: 正規表示式;
var expression = /pattern/flags; 标志flags包括 : g : 全局; i : 不区分大小写; m : 多行模式; 例子 : var pattern = /at/g 全局找at var pattern = /[bc]at/i ; 匹配第一个bat或cat,不区分大小写。 无意符须转义; * RegExp实例方法:
RegExp主要方法是
-exec():捕獲組,參數為字串,傳回數組,無匹配返回null ,傳回多兩個額外屬性:index 和input。
index : 位置 input:捕獲的字串
-test():匹配則傳回true,常用來驗證使用者輸入。
5、function類型
* 概念
函數實際上就是對象,與其他參考型別一樣,有屬性和方法,函數名稱就是只想對象的指標。
* 没有重载
宣告相同函數時,後面的會覆寫前面的函數。
* 函数声明和函数表达式 function sum(){ } // 函数声明 var sum = function(){ } // 函数表达式函数声明可以变量提升,任何时候任何位置都可以调用。 * 作为值的函数
把函數當作參數傳給另一個函數,要存取函數而不執行函數,必須去掉函數名稱後面的那對圓括號
// 從一個函數回傳另一個函數
// 根據某個物件陣列排序
function compare(pro){
return function(obj1,obj2){ var val1 = obj1[pro]; var val2 = obj2[pro]; if(val1 > val2){ return 1; }else if(val1 <p>內部含有兩個特殊物件:this和argument<br>-argument:包含傳入的所有參數,內有callee屬性,是一個指針,只想擁有此物件的函數。 <br>// 遞歸演算法算階乘<br>function fac(num){</p><pre class="brush:php;toolbar:false">if(num <p>函數也是對象,因此有屬性和方法;</p><pre class="brush:php;toolbar:false">* -属性 : length 和 prototype
-length 表示希望接收命名參數的個數。
-prototype 是保存所有勢力和方法的真正所在,如裡面保存著tostring(),valueOf等,也可以用來繼承,極為重要。
prototype屬性不可枚舉,因此不能用for-in。
* -方法 : 非继承而来的方法有两个: apply() 和 call().
作用為在特定的作用域中呼叫函數,實際上是設定函數體內this物件的值。兩個方法的作用相同,差異為接收參數的方式不同。 call() : 參數一一列舉
apply() : 參數為一個陣列兩者的作用不只傳遞參數,真正的作用是擴充函數的作用域。把訪問不到的地方傳進來。
bind():方法,建立函數實例,與this值綁定,全域作用域。
6、基本包装类型 (也是对象)
为方便操作基本类型值,提供3个特殊引用类型:Boolean,Number和String.
每读取值后台都会创建对应的基本包装类型的对象,才可以用方法操作数据。
引用类型与基本包装类型主要区别为对象生存期,用new创建引用累心实例一直保存在内存中,自动创建基本包装类型存在执行瞬间,然后立即销毁,所以不能给基本类型添加属性和方法。
* Boolean 类型
typeof 基本类型 // ‘boolean’typeof 引用类型 // 'object'建议永不要使用Boolean对象
* Number 类型
toFixed()方法 : 按照指定方法返回数值的字符串表示。
var num = 10;num.tpFixed(2) // '10.00'
toExpoential() : 幂
* String 类型
属性:length : 表示含多少个字符方法:
1)字符方法:charAt()和charCodeAt():查找某个字符在字符串中的位置。 charCodeAt():查找字符编码
2)字符串操作方法:拼接用+号
-三个给予字符串创建新串:
slice():切片 // 第一个参数为起始位置,第二个参数为结束位置substr():子函数 // 第一个参数为起始位置,第二个参数为截取的个数substring():子串 // 第一个参数为起始位置,第二个参数为结束位置
以上方法都不会影响原始字符串
3)字符串位置方法:
indexof:从字符串中查找字符串,返回位置,查不到则返回-1.
indexOf:从头查找lastIndexOf:从尾查找 返回第一次出现的位置
4)trim:创建字符串副本,删除前后所有空格,原始字符串不变。
5)字符串大小写转变:
toLocalUpperCase():转大写,针对特定地区
toLocalLowerCase():转小写,针对特定地区
toUpperCase():转大写
toLowerCase():转小写
6)字符串模式匹配方法:
match():与RegExp的exec方法相同,参数为正则表达式活RegExp对象。
search():从尾开始查找,参数与match相同,找不到返回-1
replace():替换
split():切片,基于指定分隔符字符串为多个子字符串。第二个参数可选,返回几个数组。
7、单体内置对象
已自行实例化,可直接使用,Global和Math
* -Global对象,全局对象:所有全局作用域中属性和方法都是它的。
--url编码
--eval():解析字符串代码并执行
* -Math对象
--Math.ceil():向上取整。
--Math.floor():向下取整。
--Math.round():四舍五入。
* random()方法:随机数,返回0~1之间随机数。
本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的JavaScript视频教程栏目!
以上是javaScript引用類型的詳細介紹(附範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

禪工作室 13.0.1
強大的PHP整合開發環境