js中的extend的用法及其JS中substring與substr的區別

1.??? JS中substring與substr的區別

之前在項目中用到substring方法,因為C#中也有字符串的截取方法Substring方法,當時也沒有多想就誤以為這兩種方法的使用時一樣的。這樣就直接按照在C#中使用Substring的方式,直接在js中用了substring,在實際的項目中,有時候能得到正確的結果,但是有時候得到的結果卻讓人匪夷所思,后來仔細的調試跟蹤之后才發現,原來是Js中substring的方法跟C#中的Substring方法不一樣。關于C# 中的字符串截取方法已經很簡單了,這里就不再敘述了。主要講一個js中的substring方法,順便再講一下substr方法。

Substring:

該方法可以有一個參數也可以有兩個參數。

l? 一個參數:

示例: var str=“Olive”;

?????????? ????str.substring(3);

??????? 結果:“ve”

??????? 說明:當substring只有一個參數時,參數表示從字符串的第幾位開始截取,

直截取到字符串結尾。

l? 兩個參數:

??????? 示例:var str=“Olive”;

1)?????? Str.substring(3,4);

2)?????? Str.substring(3,2);

?????????? 結果:1) “v”? 2) 0

?????????? 說明:當substring有兩個參數時,第一個參數表示從字符串的第幾位開始截取,第二個參數表示截取到字符串的第幾位。這點是個C#中字符截取不同的一點,所以才會導致不同的結果。

Substr:

該方法也可以有一個或兩個參數。

l? 一個參數:

??? 說明:substr一個參數時,作用跟substring方法一個參數時一樣。

l? 兩個參數:

??? 示例:var str=“Olive”;

1)?????? Str.substr(3,2);

2)?????? Str.substr(3,4);

??????? 結果:1) “ve” 2) “ve”

??????? 說明:substr有兩個參數時,第一個參數表示從字符串的第幾位開始截取,第二個參數表示截取多少位字符串。這點跟C#中字符截取相同的,所以在以后的使用中,如果想要避免出現截取的問題最好還是使用substr。

2 $.extend()

因為項目中有些地方看到有用到這個方法,當時也不知道是什么意思,見的多了就想了解一下。原來這個方法還是挺有用的,多用在編寫插件,當然,它本身也有一些重載原型。也可是實現靜態方法:

$.extend({
sayHello: function (name) {
console.log('Hello,' + (name ? name : 'Dude') + '!');
}
})
$.sayHello(); //調用
$.sayHello('Wayou'); //帶參調用

2.1 extend(result,item1,item2…..)

這里這個方法主要用來合并,將所有的參數項都合并result中,并返回result,但是這樣就會破壞result的結構。

2.2 extend({},item1,item2,……)

用這個方法,可以將所得的結果全部合并在{}中,并返回,而且還不會破壞原有的項的結構。

示例:

Var item={name:”olive”,age:23};

Var item1={name:”Momo”,sex:”gril”};

Var result=$.extend({},item,item1);

結果:

Result={name:”Momo”,age:23,sex:”gril”};

說明:以上的結果表明extend方法將所有的項都合并到了{}中,但是,細心一點就會發現,其中item1中的name:“Momo” 將item中的name:“olive”給覆蓋了,這是怎么回事?請接著往下看。

2.3 extend(bool,{},item1,item2….)

Extend方法還有帶bool型參數的重載。

bool型參數為true表示深拷貝,為false時表示淺拷貝。具體可以通過一下示例來說明:

示例:

var item={name:“olive”,age:23,address{provice:”河南”,city:”鄭州”}};

var item1={sex:”girl”,address{city:”北京”}};

var result=$.extend(true,item,item1);

var result1=$.extend(false,item,item1);

結果:

Result={name:“olive”,age:23,sex:”gril”,address:{provice:”河南”,city:”北京”}};

Result1={name:“olive”,age:23,sex:”gril”,address:{ city:”北京”}};

說明:

以上結果說明,當參數為ture時,即為深拷貝,當子項item1中的子項有與item中的子項相同屬性的值不一樣時,item1中子項的值會將item子項中的值給覆蓋,當子項item1的屬性跟item中的屬性不同時,會與item進行合并。

當參數為false時,子項item1中的子項中與item中的子項屬性相同時,item1中子項的屬性值會將item中的值給完全覆蓋。

2.4 $.extend(item)

該方法是將item合并到Jquery的全局對象中去,相當于為Jquery全局對象添加了一個靜態方法(對應這里的靜態方法,當然還有實例方法,在后邊有介紹)。

???? 示例:

?????????? $.extend({SayHello:function(value){alert(“hello “+value);}});

?????????? 這樣寫過之后,就可以直接調用SayHello方法:

?????????? $.SayHello(“Olive”);

???? 說明:該方法相當于為Jquery類添加了新的方法。

2.5 $.fn.extend(item)

上邊提到的$.extend(item)說是為Jquery類添加了靜態方法,那么這里的$.fn.extend(item

)就是為每一個實例添加一個實例方法了。

???? 示例:

? ???????$.fn.extend({hello:function(value){alert(“hello “+value);}});

???????? 這樣寫過之后,在獲取每一個示例之后,都可以調用該方法:

???????? $(“#id”).hello(“Olive”);

3.(function($){….})(jQuery)

初次看到這種寫法時,一頭霧水,不知所云。在網上查找了一些資料之后才有點明白。

我們先看第一個括號里邊的內容:function($){….},這不就是一個匿名的函數嗎?但是它的形參比較奇怪,是$,這里主要是為了不與其它的庫沖突。

這樣我們就比較容易理解第一個括號內的內容就是定義了一個匿名函數,我們在調用函數的時候,都是函數名后邊加上括號以及實參,但是由于操作符的優先級我們定義的匿名函數也需要用()括起來。

現在我想大家已經很清楚這句話是什么意思了吧。第一個括號表示定義了一個匿名函數,然后第二個函數表示為該函數傳遞的參數,整個結合起來意思就是,定義了一個匿名函數,然后又調用該函數,該函數的實參為jQuery。

相當于:function fun($){…};fun(jQuery);

這種方法多用于存放開發的插件,執行其中的代碼時,Dom對象并不一定加載完畢。于此相反的是$(function(){}),這種方法在使用時頁面的Dom對象已經加載完畢了。事實上該方法的全寫是:$(document).ready(function(){});

?

來自:http://blog.csdn.net/xuemoyao/article/details/19021659

轉載于:https://www.cnblogs.com/gsydw/p/6437645.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/393713.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393713.shtml
英文地址,請注明出處:http://en.pswp.cn/news/393713.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

事件處理程序

轉載于:https://www.cnblogs.com/ypx666/p/10869448.html

fis3 配置文件

1 代碼: fis.match(*.less, {// fis-parser-less 插件進行解析parser: fis.plugin(less),// .less 文件后綴構建后被改成 .css 文件rExt: .css });// 配置配置文件,注意,清空所有的配置,只留下以下代碼即可。 fis.match(*.{png,js,css}, {rel…

核心指導網絡由任務編碼器_如何在現實世界中與實際用戶一起指導您的編碼和編碼生涯...

核心指導網絡由任務編碼器by Bob Berry由Bob Berry 如何在現實世界中與實際用戶一起指導您的編碼和編碼生涯 (How to guide your coding and your coding career with real users, in the real world) Experience drives everything. It’s the basis of our reality. It’s a…

脈沖時間寬度c語言,基于AT89C52脈沖寬度測量儀的設計與實現

趙翠玉摘要:本文基于AT89C52的脈沖寬度測量儀的設計。該儀器測量結果采用了軟件數字濾波,消除了測量中抖動問題,測量精度高、穩定性好,具有一定的實用性。關鍵詞:AT89C52;測量儀;脈沖寬度中圖分類號:TM935.…

leetcode1433. 檢查一個字符串是否可以打破另一個字符串(貪心算法)

給你兩個字符串 s1 和 s2 ,它們長度相等,請你檢查是否存在一個 s1 的排列可以打破 s2 的一個排列,或者是否存在一個 s2 的排列可以打破 s1 的一個排列。 字符串 x 可以打破字符串 y (兩者長度都為 n )需滿足對于所有 …

cordova 人臉識別_html5與EmguCV前后端實現——人臉識別篇(一)

上個月因為出差的關系,斷更了很久,為了補償大家長久的等待,送上一個新的系列,之前幾個系列也會抽空繼續更新。大概半年多前吧,因為工作需要,我開始研究圖像識別技術。OpenCV在這方面已經有了很多技術積累&a…

[轉載] mysql 索引中的USING BTREE 的意義

索引是在存儲引擎中實現的,因此每種存儲引擎的索引都不一定完全相同,并且每種存儲引擎也不一定支持所有索引類型。 根據存儲引擎定義每個表的最大索引數和最大索引長度。所有存儲引擎支持每個表至少16個索引,總索引長度至少為256字節。 大多數…

git-命令

git config --global user.email “郵箱” git config --global user.name ”用戶名” git init           初始化 忽略指定文件 echo "temp/" >> .gitignore echo "private_key" >> .gitginore 狀態 git status 添加 git add …

C語言 floor四舍五入,Math函數的四舍五入,Floor,Ceiling,Round的一些注意事項!...

1.Math.Round:四舍六入五取偶引用內容Math.Round(0.0) //0Math.Round(0.1) //0Math.Round(0.2) //0Math.Round(0.3) //0Math.Round(0.4) //0Math.Round(0.5) //0Math.Round(0.6) //1Math.Round(0.7) //1Math.Round(0.8) //1Math.Round(0.9) //1說明:對於…

Command Magicks:如何使用控制臺處理文件和字符串

by Luciano Strika通過盧西亞諾斯特里卡(Luciano Strika) Command Magicks:如何使用控制臺處理文件和字符串 (Command Magicks: How to Manipulate Files and Strings with the Console) As developers, there are lots of repetitive things we do every day that…

dreamweaver后綴名_讓 Dreamweaver 8 支持其它擴展名的方法

有的時候,我們為了網站的安全考慮,常常會修改網站的擴展名,如我看到有些網站的擴展名為 *.do,很明顯這個擴展名是有意改掉的,可是改了這擴展名對于我們修改網頁來說就麻煩了,比如用 Dreamweaver 8 來修改的…

sublime 3143 注冊碼

請大家支持購買正版,或者使用Atom、Vimsublime 3143版本的注冊碼:—– BEGIN LICENSE —– TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA12C0 A37081C5 D0316412 4584D136 94D7F7D4 95BC8C1C 527DA828 560B…

【BZOJ1857】【SCOI2010】傳送帶 [三分]

傳送帶 Time Limit: 1 Sec Memory Limit: 64 MB[Submit][Status][Discuss]Description 在一個2維平面上有兩條傳送帶,每一條傳送帶可以看成是一條線段。兩條傳送帶分別為線段AB和線段CD。lxhgww在AB上的移動速度為P,在CD上的移動速度為Q,在平…

google android廣告異步加載,谷歌廣告異步代碼和同步代碼的解決方法

通常大部分人初次接觸谷歌google adsense廣告聯盟都會有疑問,在新建單元界面我們可以看到獲取代碼類型選項。下面是學習啦小編為大家整理的關于谷歌廣告異步代碼和同步代碼的解決方法,一起來看看吧!谷歌廣告異步代碼和同步代碼的解決方法選擇同步還是異步…

openssl 加密解密 指令_Shell openssl命令加密解密字符串

Linux下的 openssl 命令解密我們以在線加密網站為例 http://tool.chacuo.net/cryptdes我們選擇des cbc模式,密鑰為abcdefgh, 偏移量為12345678,以base64輸出結果 對hello進行加密,得到結果8Snw/EmQdY我們再用將在線網站改用shell命…

使用Docker 安裝Elasticsearch、Elasticsearch-head、IK分詞器 和使用

使用Docker 安裝Elasticsearch、Elasticsearch-head、IK分詞器 和使用 原文:使用Docker 安裝Elasticsearch、Elasticsearch-head、IK分詞器 和使用Elasticsearch的安裝 一、elasticsearch的安裝 1.鏡像拉取 docker pull elasticsearch:tag2.啟動 docker run -it -e "disc…

Spring 的持久化實例(JDBC, JdbcTemplate、HibernateDaoSupport、JdbcDaoSupport、SqlSessionDaoSupport等)...

2019獨角獸企業重金招聘Python工程師標準>>> 一、表(這里用mysql,數據庫名為yiibai) CREATE TABLE customer (CUST_ID int(10) UNSIGNED NOT NULL,NAME varchar(100) NOT NULL,AGE int(10) UNSIGNED NOT NULL ) ENGINEInnoDB DEFA…

開始使用gradle

前提配置gradle環境 每個gradle構建都是以一個腳本開始的。gradle構建默認的名稱為build.gradle。當在shell中執行gradle命令時,gradle會去尋找為build.gradle文件,如果找不到就會顯示幫助信息。 下面我們以經典的helloworld為例。 1、首先建立一個build…

freecodecamp_freeCodeCamp的新編碼課程現已上線,其中包含1,400個編碼課程和6個開發人員認證

freecodecampFor the past year, our community has been hard at work on a massive new programming curriculum. And now that curriculum is live and out of beta!在過去的一年中,我們的社區一直在努力編寫大量的新編程課程。 現在,該課程已上線并且…

麥克勞林展開式_數學家麥克勞林與牛頓的故事

數學家麥克勞林麥克勞林(Colin Maclaurin1698年2月-1746年6月), 蘇格蘭數學家,麥克勞林是18世紀英國最具有影響的數學家之一。01麥克勞林是一位牧師的兒子,半歲喪父,9歲喪母。由其叔父撫養成人。叔父也是一位牧師。麥克勞林是一個“神童”&am…