<font id="zqva1"></font>
<rt id="zqva1"></rt>
  • <tt id="zqva1"></tt>
    <cite id="zqva1"></cite>

    <cite id="zqva1"><noscript id="zqva1"></noscript></cite>
      <rp id="zqva1"><meter id="zqva1"></meter></rp>

        <cite id="zqva1"></cite>
          <b id="zqva1"></b>
          <rp id="zqva1"></rp>
          <cite id="zqva1"></cite>

          <rt id="zqva1"></rt>

        1. <rp id="zqva1"></rp>

          Js使用Object.assign()對象的復制、合并、封裝等操作

          時間:?2018-01-02閱讀:?5350標簽:?復制

          OObject.assign()方法可將所有可枚舉屬性的值從一個或多個源對象復制到目標對象,它將返回目標對象。 其中對象的繼承屬性和不可枚舉屬性是不能拷貝的。


          對象的復制

          var obj= { a: 1 };
          var copy = Object.assign({}, obj);
          console.log(copy); //{ a: 1 }

          說明:assign復制的是屬性值,不能復制源對象中具有引用其它對象的屬性值,所以不能使用它來實現深拷貝。實現深拷貝請參考:js中深拷貝和淺拷貝的區別及原理

          在官方文檔中寫得一個Polyfill ,代碼加了點注釋如下:

          if (!Object.assign) {
              // 定義assign方法
            Object.defineProperty(Object, 'assign', {
              enumerable: false,
              configurable: true,
              writable: true,
              value: function(target) { // assign方法的第一個參數
                'use strict';
                // 第一個參數為空,則拋錯
                if (target === undefined || target === null) {
                  throw new TypeError('Cannot convert first argument to object');
                }
          
                var to = Object(target);
                // 遍歷剩余所有參數
                for (var i = 1; i < arguments.length; i++) {
                  var nextSource = arguments[i];
                  // 參數為空,則跳過,繼續下一個
                  if (nextSource === undefined || nextSource === null) {
                    continue;
                  }
                  nextSource = Object(nextSource);
          
                  // 獲取改參數的所有key值,并遍歷
                  var keysArray = Object.keys(nextSource);
                  for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {
                    var nextKey = keysArray[nextIndex];
                    var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
                    // 如果不為空且可枚舉,則直接淺拷貝賦值
                    if (desc !== undefined && desc.enumerable) {
                      to[nextKey] = nextSource[nextKey];
                    }
                  }
                }
                return to;
              }
            });
          }

          從上面代碼可以看出Object.assign()只對頂層屬性做了賦值,沒有繼續做遞歸把所有下一層的屬性做深拷貝。


          對象的合并和封裝

          var obj1 = { a: 1,};
          var obj2 = { b: 2, c: 2 };
          var obj3 = { c: 3 };
          var obj = Object.assign({}, obj1, obj2, obj3,null,undefined,"abc",{[Symbol("sbl")]:4});
          console.log(obj); //輸出{0: "a", 1: "b", 2: "c", a: 1, b: 2, c: 3}
          VM1253:5 {0: "a", 1: "b", 2: "c", a: 1, b: 2, c: 3, Symbol(sbl): 4}

          說明:1.對象的屬性被后續參數中具有相同屬性的其他對象覆蓋;2.null、undefined會被忽略;3.字符串會被封裝成單字符的可枚舉屬性數組。


          站長推薦

          1.阿里云: 本站目前使用的是阿里云主機,安全/可靠/穩定。點擊領取2000元代金券、了解最新阿里云產品的各種優惠活動點擊進入

          2.騰訊云: 提供云服務器、云數據庫、云存儲、視頻與CDN、域名等服務。騰訊云各類產品的最新活動,優惠券領取點擊進入

          3.廣告聯盟: 整理了目前主流的廣告聯盟平臺,如果你有流量,可以作為參考選擇適合你的平臺點擊進入

          鏈接: http://www.modern-decoration.com.cn/article/detial/299

          css如何設置不可復制?

          css可以使用user-select屬性來設置不可復制,此屬性可以設置或檢索是否允許用戶選中文本,將此屬性的屬性值設置為none可以使文本不可選中。

          HTML頁面 用CSS實現禁止選中、復制和右鍵

          最近在寫頁面的時候,需要在左上角加一個logo,但是復制的時候會把這張圖片一塊選中。那么我們可以通過CSS給它設置禁止選中,代碼如下:

          原生JS在網頁上復制的所有文字后面自動加上一段版權聲明

          不少技術博客有這樣的處理,當我們復制代碼的時候,會自動加上一段本信息版權為XXXX,這是怎么實現的呢?其實實現的方式很簡單,可以在我的網站頁面上綁定一個 copy 事件,當你復制文章內容的時候

          原生js實現復制內容到剪切板,兼容pc、移動端(支持Safari瀏覽器)

          在開發中經常會遇到這樣的需求,第一種就是點擊復制當前頁面的鏈接,第二種就是類似卡券的功能,需要復制密碼等等。純js實現復制文本并提示復制成功(干貨)適用所有瀏覽器

          如何設置網頁無法復制?

          javascript設置網頁無法復制的方法:在JavaScript代碼中設置禁用右鍵菜單、復制、選擇等操作,禁用Ctrl+c和Ctrl+v快捷鍵的使用,通過這種方法就可以實現網頁無法復制。

          Vue中結合clipboard實現復制功能

          首先現在Vue中引入clipboard,在需要使用的組件中import 引入clipboard.不論是單按鈕復制還是多按鈕復制,一定要在頁面加載DOM完成后先New出來具有復制功能的按鈕,如果在函數內再New那么可能會出現點擊復制按鈕兩次,才復制成功的現象

          程序員_代碼神注釋鑒賞大全(可復制粘貼)

          程序員個性注釋,讓你的代碼飛起來。一時興起就收集了以下神注釋,希望能為廣大ITer帶來快樂,以下是收集了以下神注釋,希望能為廣大程序員們帶來快樂,緩解你們工作中的壓力

          網頁不讓用戶復制方法總匯,設置html禁止選擇,保護源碼,js禁止復制文字

          這篇文章主要講解:右鍵復制失效方法、菜單-文件-另存為-失效方法、防止查看源代碼進行復制的方法、防止頁面緩存的方法。來達到一定的代碼保護效果

          原生Js實現復制(Copy)的方法總結,execCommand和clipboardData的使用

          原生Js實現復制(Copy)的兩種方法,一種是利用 clipboardData,另外一種則是用 execCommand(),今天將統一講解一下關于他們的使用方法。

          內容以共享、參考、研究為目的,不存在任何商業目的。其版權屬原作者所有,如有侵權或違規,請與小編聯系!情況屬實本人將予以刪除!

          文章投稿關于web前端網站點搜索站長推薦網站地圖站長QQ:522607023

          小程序專欄: 土味情話心理測試腦筋急轉彎幽默笑話段子句子語錄成語大全運營推廣

          国产精品高清视频免费 - 视频 - 在线观看 - 影视资讯 - 唯爱网