jquery 多個文字框賦值 賦值,深拷貝和淺拷貝

2021-10-14 01:21:05 字數 2481 閱讀 1988

那物件來說, 物件的賦值就是本質上是位址的引用, 當舊物件的基本屬性和應用型別改變時, 都會改變新物件. 例如:

let oldobj = 

let newobj = oldobj

oldobj.name = 'zeke yang'

oldobj.friends[1] = 'ryan zhou'

console.log(newobj) // name: 'zeke yang' friends: ['rookie', 'ryan zhou', 'vincent']

什麼是淺拷貝

淺拷貝是建立乙個新物件,這個物件有著原始物件屬性值的乙份精確拷貝。如果屬性是基本型別,拷貝的就是基本型別的值,如果屬性是引用型別,拷貝的就是記憶體位址 ,所以如果其中乙個物件改變了這個位址,就會影響到另乙個物件.
淺拷貝的實現方式彙總

具體用法,可參考--->object.assign()的使用

let oldobj = 

let newobj = object.assign({}, oldobj)

oldobj.name = 'zeke yang'

oldobj.friends[1] = 'ryan zhou'

console.log(newobj) // name: 'zeke' friends: ['rookie', 'ryan zhou', 'vincent']

var _ = require('lodash')

let oldobj =

let newobj = _.clone(oldobj)

oldobj.name = 'zeke yang'

oldobj.friends[1] = 'ryan zhou'

console.log(newobj) // name: 'zeke' friends: ['rookie', 'ryan zhou', 'vincent']

es6新語法, 用...表示, 拷貝乙個物件可以這樣做,let newobj = [...oldobj], 非常簡單方便

concat() 方法用於合併兩個或多個陣列。此方法不會更改現有陣列,而是返回乙個新陣列。
slice() 方法返回乙個新的陣列物件,這一物件是乙個由 begin 和 end 決定的原陣列的淺拷貝(包括 begin,不包括end, 兩個引數均可選, 若兩個引數均無, 則提取整個陣列)。原始陣列不會被改變。
hasownproperty() 方法會返回乙個布林值,指示物件自身屬性中是否具有指定的屬性(也就是,是否有指定的鍵)。所有繼承了 object 的物件都會繼承到 hasownproperty 方法。這個方法可以用來檢測乙個物件是否含有特定的自身屬性;和 in 運算子不同,該方法會忽略掉那些從原型鏈上繼承到的屬性。
編碼實現:

function shallowcopy (source)  // target目標物件 source源物件

for (let key in source)

}return target

}

什麼是深拷貝

深拷貝是將乙個物件從記憶體中完整的拷貝乙份出來,從堆記憶體中開闢乙個新的區域存放新物件,且修改新物件不會影響原物件
深拷貝的實現方式

原理:json.stringify將物件轉成json字串,再用json.parse把字串解析成物件, 產生新物件,開闢新的棧,實現深拷貝。 但是此法對與函式/正則進行拷貝時,會將function解析為null, 正則變為空物件.

let newobj = _.deepclone(oldobj)

具體用法請移步-->jquery.extend()jquery.extend( [deep ], target, object1 [, objectn ] ): 第乙個引數deep, bpolean型別, 如果是true則深拷貝, 注意不支援給這個引數傳遞false

function clonedeep (source) ;

for (var key in source) else

}} return target;

}function isobject (obj)

淺拷貝只複製指向某個物件的指標,而不複製物件本身,新舊物件還是共享同一塊記憶體。但深拷貝會另外創造乙個一模一樣的物件,新物件跟原物件不共享記憶體,修改新物件不會改到原物件。
參考料

多文字框的值得存放和賦值

問題 在乙個頁面中有多項考核成績,如 禮貌 表達技巧 控制 傾聽技巧 情緒控制等多項考核,而沒想考核又有多項考核標準,如 評分 內容 對話例項等,會這樣下來,乙個頁面會有幾百個內容需要儲存,如果新建張表的話會要上百個字段,這明顯是不合適,面對上面的為題我是這樣解決的 1 在該頁面中按考核標準建立字段...

jquery之顯示多個文字框剩餘輸入字數

效果如圖 jquery 商品屬性 var attribute attribute var count attribute.length attribute.keyup function var this this var currcount getlength this.val checkattri...

jquery技巧 jquery獲取文字框字元數

jquery 可以用text 方法來取得字串,再用length 判斷長度,然後用substring 方法格式化截斷,趁我寫例子這點時間有兩個人回答了 呵呵 剛才試驗過了 看下例子吧 得到字串的真實長度 雙位元組換算為兩個單位元組 function getstractuallen schars 格式化...