老司机91精品网站在线观看-老司机67194免费观看-老司国产精品视频-老熟人老女人国产老太-中文字幕日本在线-中文字幕日本一区久久

首頁

JavaScript 中對象的深拷貝

藍(lán)藍(lán)設(shè)計的小編

在JavaScript中,對對象進(jìn)行拷貝的場景比較常見。但是簡單的復(fù)制語句只能對對象進(jìn)行淺拷貝,即復(fù)制的是一份引用,而不是它所引用的對象。而更多的時候,我們希望對對象進(jìn)行深拷貝,避免原始對象被無意修改。

對象的深拷貝與淺拷貝的區(qū)別如下:

  • 淺拷貝:僅僅復(fù)制對象的引用,而不是對象本身;
  • 深拷貝:把復(fù)制的對象所引用的全部對象都復(fù)制一遍。

一. 淺拷貝的實(shí)現(xiàn)

淺拷貝的實(shí)現(xiàn)方法比較簡單,只要使用是簡單的復(fù)制語句即可。

1.1 方法一:簡單的復(fù)制語句

/* ================ 淺拷貝 ================ */ function simpleClone(initalObj) { var obj = {}; for ( var i in initalObj) {
        obj[i] = initalObj[i];
    } return obj;
}

JavaScript世界萬物誕生記

藍(lán)藍(lán)設(shè)計的小編

一. 無中生有

起初,什么都沒有。

1.png

 

造物主說:沒有東西本身也是一種東西啊,于是就有了null:

現(xiàn)在我們要造點(diǎn)兒東西出來。但是沒有原料怎么辦?

有一個聲音說:不是有null嘛?

另一個聲音說:可是null代表無啊。

造物主說:那就無中生有吧!

于是:

2.png

更快學(xué)習(xí)JS的6個簡單思維技巧

藍(lán)藍(lán)設(shè)計的小編

當(dāng)人們嘗試學(xué)習(xí) JavaScript , 或者其他編程技術(shù)的時候,常常會遇到同樣的挑戰(zhàn):

  • 有些概念容易混淆,特別是當(dāng)你學(xué)習(xí)過其他語言的時候。
  • 很難找到學(xué)習(xí)的時間(有時候是動力)。
  • 一旦當(dāng)你理解了一些東西的時候,卻很容易再一次忘記。
  • 可以使用的工具甚多且經(jīng)常變化,所以不知道從哪里開始入手。

幸運(yùn)的是,這些挑戰(zhàn)最終都可以被戰(zhàn)勝。在這篇文章里,我將介紹 6 個思維技巧來幫你更快的學(xué)習(xí) JavaScript ,讓你成為一個更快樂更多產(chǎn)的程序員。

對于很多學(xué)習(xí) JavaScript 的人來說,他們問的第一個問題是選用哪個框架(現(xiàn)有框架非常多)。但是如果你還不熟悉原生的 JavaScript ,那這就是個不該問的問題。你會花費(fèi)你全部的時間去查詢不同的框架并且不會取得任何進(jìn)展。

詳解JS 變量、作用域及內(nèi)存

藍(lán)藍(lán)設(shè)計的小編

基本類型值有:undefined,NUll,Boolean,Number和String,這些類型分別在內(nèi)存中占有固定的大小空間,他們的值保存在棧空間,我們通過按值來訪問的。

 

1)值類型:數(shù)值、布爾值、null、undefined。
2)引用類型:對象、數(shù)組、函數(shù)。
 
如果賦值的是引用類型的值,則必須在堆內(nèi)存中為這個值分配空間。由于這種值的大小不固定(對象有很多屬性和方法),因此不能把他們保存到棧內(nèi)存中。但內(nèi)存地址大小是固定的,因此可以將內(nèi)存地址保存在棧內(nèi)存中。
 
<script type="text/javascript”>
var box = new Object();  //創(chuàng)建一個引用類型
var box = "trigkit4";   //基本類型值是字符串
box.age = 21;    //基本類型值添加屬性很怪異,因?yàn)橹挥袑ο蟛趴梢蕴砑訉傩浴?/span>
alert(box.age);  //不是引用類型,無法輸出;
</script>
 

如何讀懂并寫出裝逼的函數(shù)式代碼

藍(lán)藍(lán)設(shè)計的小編

今天在微博上看到了 有人分享了下面的這段函數(shù)式代碼,我把代碼貼到下面,不過我對原來的代碼略有改動,對于函數(shù)式的版本,咋一看,的確令人非常費(fèi)解,仔細(xì)看一下,你可能就暈掉了,似乎完全就是天書,看上去非常裝逼,哈哈。不過,我感覺解析那段函數(shù)式的代碼可能會一個比較有趣過程,而且,我以前寫過一篇《函數(shù)式編程》的入門式的文章,正好可以用這個例子,再升華一下原來的那篇文章,順便可以向大家更好的介紹很多基礎(chǔ)知識,所以寫下這篇文章。

先看代碼

這個代碼平淡無奇,就是從一個數(shù)組中找到一個數(shù),O(n)的算法,找不到就返回 null。

下面是正常的 old-school 的方式。不用多說。

//正常的版本 function find (x, y) { for ( let i = 0; i < x.length; i++ ) { if ( x[i] == y ) return i;
  } return null;
} let arr = [0,1,2,3,4,5] console.log(find(arr, 2)) console.log(find(arr, 8))

HTML5手勢檢測原理和實(shí)現(xiàn)

藍(lán)藍(lán)設(shè)計的小編

前言

隨著 Hybrid 應(yīng)用的豐富,HTML5 工程師們已經(jīng)不滿足于把桌面端體驗(yàn)簡單移植到移動端,他們覬覦移動原生應(yīng)用人性化的操作體驗(yàn),特別是原生應(yīng)用與生俱來的豐富的手勢系統(tǒng)。HTML5 沒有提供開箱即用的手勢系統(tǒng),但是提供了更底層一些的對 touch 事件的監(jiān)聽?;诖耍覀兛梢宰龀鲎约旱氖謩輲?。

手勢

常用的 HTML5 手勢可以分為兩類,單點(diǎn)手勢和兩點(diǎn)手勢。單點(diǎn)手勢有 tap(單擊),double tap(雙擊),long tap(長按),swipe(揮),move(移動)。兩點(diǎn)手勢有 pinch(縮放),rotate(旋轉(zhuǎn))。

接下來我們實(shí)現(xiàn)一個檢測這些手勢的 javaScript 庫,并利用這個手勢庫做出炫酷的交互效果。

1.jpg

2016年7個JavaScript框架

藍(lán)藍(lán)設(shè)計的小編

當(dāng)涉及到Web開發(fā)時,JavaScript框架往往是一些開發(fā)人員和企業(yè)的平臺。可能,你有機(jī)會嘗試過一兩個的JavaScript框架,但你仍然有點(diǎn)不確定哪個才是最佳的最值得掌握的,或者哪個值得你建議你的開發(fā)人員選擇用于下一個web開發(fā)項(xiàng)目。

JavaScript正在以驚人的速度前進(jìn),并且添加新的技能到你的存儲庫變得有不斷的壓力。為了做到這一點(diǎn),知道和了解更多的JavaScript框架在現(xiàn)在看來是必要的。在ValueCoders進(jìn)行了徹底的研究后,我們?nèi)雵似渲衅邆€框架,它們是:

1.AngularJS 2.0&1.x

在最受期待的AngularJS 2.0正式發(fā)布之后,框架的普及已經(jīng)達(dá)到了一個新的水平。然而,如果你不確定的話,跳到新版本仍然是一個冒險的決定。讓我們通過這個流程圖來幫助你做出決定:

1.png

JavaScript 數(shù)組中的 indexOf 方法詳解

藍(lán)藍(lán)設(shè)計的小編

最近項(xiàng)目遇到一個小問題代碼我會簡化成小例子展示給大家。

用心看到最后會有收獲哈,基礎(chǔ)扎實(shí)的童鞋可以直接跳到數(shù)組類型使用。

說到 indexOf 大家并不陌生,判斷字符串是否包涵子字符串時特別常用(正則不熟練同學(xué)的利器)。

String 類型的使用

溫習(xí)一下大家熟知的字符串用法,舉個例子

let str = 'orange';

str.indexOf('o'); //0 str.indexOf('n'); //3 str.indexOf('c'); //-1

這里 0 和 3 分別是 o 和 n 在字符串中出現(xiàn)的位置。起始下標(biāo)是 0。而 -1 代表未匹配。

JavaScript arguments 對象詳解

藍(lán)藍(lán)設(shè)計的小編

1. 什么是 arguments

MDN 上解釋:

arguments 是一個類數(shù)組對象。代表傳給一個function的參數(shù)列表。

我們先用一個例子直觀了解下 JavaScript 中的 arguments 長什么樣子。

function printArgs() { console.log(arguments);
}

printArgs("A", "a", 0, { foo: "Hello, arguments" });

執(zhí)行結(jié)果是:

jQuery XML 解析器和搜索機(jī)制

藍(lán)藍(lán)設(shè)計的小編

介紹

這里所描述的過程將使你能夠創(chuàng)建一個簡單的基于jQuery / XML的解析器和搜索機(jī)制。此過程將通過一個AJAX請求檢索XML,然后在jQuery中分析數(shù)據(jù),為搜索機(jī)制做準(zhǔn)備。該解決方案將基于不區(qū)分大小寫的全部或部分關(guān)鍵字匹配地返回結(jié)果。來自于關(guān)鍵字搜索的返回結(jié)果設(shè)置將被格式化為一個直接鏈接到相應(yīng)網(wǎng)站的超鏈接。jQuery搜索方法非常類似于Mike Endale的一個項(xiàng)目,不過增加了一個DOM解析器,正則表達(dá)式以及結(jié)果集分組。

背景

客戶端需要一個簡單的搜索工具來查找基于關(guān)鍵字搜索的本地內(nèi)部網(wǎng)站。關(guān)鍵字搜索必須不區(qū)分大小寫,并允許返回部分匹配的結(jié)果。歸咎于客戶端內(nèi)容管理系統(tǒng)的架構(gòu),因此(SharePoint)只能執(zhí)行客戶端腳本。其解決方案的另一個障礙是,源數(shù)據(jù)將來自多個源。數(shù)據(jù)被存儲在多個Excel電子表格,CSV文件和MS Access數(shù)據(jù)庫內(nèi)。這就對我們提出了這樣的需要:開發(fā)具有一系列查詢和一個宏的Access解決方案,充當(dāng)可合并、擦洗,并最后格式化數(shù)據(jù)作為XML輸出的偽ETL。對于這個解決方案的目的,我們將詳細(xì)介紹JavaScript XML分析器的設(shè)計,而不是偽Access ETL宏工具的設(shè)計。

使用代碼

該解決方案的做法是利用一個簡單的基于JavaScript / XML的搜索來發(fā)送數(shù)據(jù)結(jié)果到HTML / JavaScript前端。前端將引用腳本:jQuery,XML和CSS文件。XML格式將因?yàn)樗目勺x性和它是數(shù)據(jù)交換行業(yè)標(biāo)準(zhǔn)格式之一的事實(shí)而被使用。 XML數(shù)據(jù)將通過使用AJAX的客戶端jQuery解析,并通過Internet Explorer 11呈現(xiàn)。

解決方案將使用RegExp對象來處理關(guān)鍵字匹配,驗(yàn)證和特殊字符處理。RegExp對象字符串將檢查危險語法從而提高解決方案的穩(wěn)定性和整體可用性。

我們將默認(rèn)使用JavaScript分組功能來返回匹配結(jié)果作為折疊的紀(jì)錄集。折疊的記錄集線項(xiàng)目將被URL鏈接到相關(guān)的Project Workspace網(wǎng)站。在擴(kuò)展的組記錄集下,結(jié)果將存在于相關(guān)的子記錄中,當(dāng)通過On Click事件展開的時候。

日歷

鏈接

個人資料

存檔

主站蜘蛛池模板: 渝北区| 东乌珠穆沁旗| 泸溪县| 新竹县| 玉山县| 锦州市| 嫩江县| 扶风县| 衡山县| 辉县市| 册亨县| 宜都市| 长海县| 绿春县| 平塘县| 佛坪县| 榆林市| 十堰市| 弥勒县| 云阳县| 会昌县| 新邵县| 志丹县| 望江县| 沁源县| 大石桥市| 循化| 嘉定区| 固阳县| 河池市| 河间市| 阳西县| 赫章县| 苏尼特右旗| 重庆市| 陕西省| 天津市| 壤塘县| 揭东县| 余姚市| 舟山市|