Object.defineProperty會直接在對象上定義新的屬性和方法,或者修改存在的屬性和方法,並返回這個對象。spa
Object.defineProperty(object, propertyname, descriptor)
數據描述符code
訪問器描述符對象
實現input輸入,span同時輸出功能blog
<body> <input type="text"> <span></span> </body>
<script> var input = document.querySelector("input"); var span = document.querySelector("span"); //建立新對象 var obj = {}; //getValue只是本身定義的屬性名字 Object.defineProperty(obj,"getValue",{ //configurable-----若是爲false, //則任未嘗試刪除目標屬性或修改屬性如下 //特性(writable, configurable, enumerable)的行爲將被無效化。 configurable:true, //傳入參數並把參數賦值 set:function(Data){ input.value = Data; span.innerHTML = Data; } }) //input標籤設置鍵盤彈起事件 input.onkeyup = function(){ //賦值,實現數據雙向開始。 obj.getValue = input.value; } </script>
運行結果事件
注意ip
語法字符串
Object.defineProperties(obj, props)
兩個input標籤之間數據互傳get
<body> <div> 輸入數據 <input type="text" class="one"> </div> <div> 顯示數據 <input class="tow"></input> </div> </body> <script> var one = document.querySelector('.one'); var tow = document.querySelector('.tow'); //建立新對象 var obj = {}; //使用對象的方法保存屬性的名字 Object.defineProperties(obj, { onediv: { //ture表示容許刪除屬性或者修改屬性 configurable: true, //傳入參數並把參數賦值 set: function (newValue) { one.value = newValue; tow.value = newValue; } }, towdiv: { //ture表示容許刪除屬性或者修改屬性 configurable: true, //傳入參數並把參數賦值 set: function (newValue) { one.value = newValue; tow.value = newValue; } } }) //input標籤設置鍵盤彈起事件 one.onkeyup = function(){ //賦值,實現數據雙向開始。 obj.onediv = one.value; } //input標籤設置鍵盤彈起事件 tow.onkeyup = function(){ //賦值,實現數據雙向開始。 obj.towdiv = tow.value; } </script>
運行結果input