javascript,如何?資料繫結

來源:互聯網
上載者:User

標籤:objects   https   init   doc   blog   var   div   prot   代碼量   

在三大架構 搶佔前端開發技術領域的時代,基本每個架構都是實現了資料繫結,

今天我們來解密一下資料繫結的原理,

原理關乎一個很關鍵的東西,Object.prototype.__defineSetter和Object.prototype.__defineGetter

MDN地址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/__defineSetter__

 

現在我就實現一個函數,把一個對象上的某個值,和dom元素的innerHTML綁定在一起。

function bind(ele,obj,key){    var index={        init:function(){            //檢查是否有初始值,有的話就複製            if (key in obj) {                ele.innerHTML=obj[key]            }            this.bind()        },        bind:function(){            obj.__defineSetter__(key,function(v){                ele.innerHTML=v            })            obj.__defineGetter__(key,function(){                return ele.innerHTML            })        },        _do:function(){}    }    index.init()}

  不過這個函數有個缺點,只可以把一個值綁定到一個元素的innerHTML上,一個元素可以綁定多個值,但是沒辦法一個值綁定多個dom元素的屬性,不過加以修改就可以實現了,實現的話代碼量就會很長,在這裡就只能拋磚引玉了。

javascript,如何?資料繫結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.