我是靠谱客的博主 斯文芹菜,最近开发中收集的这篇文章主要介绍Object.defineProperty(),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

引用:https://blog.csdn.net/weixin_46726346/article/details/115913752

Object.defineProperty(属性所在的对象,属性的名字,描述这个属性名字的描述符对象)

描述符对象:

  1. configurable : 能否通过delete删除属性,,能否修改属性的特性,或者能否将属性修改为访问器属性,默认false

  2. enumerable : 可列举的,,属性是否for in 循环访问,默认false

  3. writable : 能否修改属性的值,默认false

  4. value : 这个属性设置的值
    在这里插入图片描述

  5. 属性描述符中有两个方法,,get() ,set()

var student = {}
Object.defineProperty(student,"name",{
    get() {
        return this._name
    },
    set(v) {
        this._name = v
    }
})
console.log(student.name)
student.name="hehe"
console.log(student.name)

Object.defineProperties(对象,属性参数)

var student = {}

Object.defineProperties(student,{
    name:{
        value:"zs",
        writable:false
    },
    age:{
        value:18,
        writable:true
    },
    sex:{
        get() {
            return this._sex
        },
        set(v) {
            this._sex=v
        }
    }
})

student.sex = "123"
console.log(student.name,student.sex)


双向绑定原理: 监听<input> 的input事件,修改就会触发,修改的值绑定到一个对象上,,用Object.defineProperty() 中的 set,get 方法,,将改变的值,设置到其他节点上

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="text" id="myInput">
<div id="contain"></div>

<script>

    window.data = {}

    var input = document.getElementById("myInput");
    var box = document.getElementById("contain");

    // input的value发生变化时触发,不用等到失去焦点
    input.addEventListener("input",function (e) {
        var text = e.target.value;
        window.data.value = text
    })

    Object.defineProperty(window.data,"value",{
        get() {
            return ""
        },
        set(v) {
            box.innerHTML = v;
        }
    })

</script>
</body>
</html>

最后

以上就是斯文芹菜为你收集整理的Object.defineProperty()的全部内容,希望文章能够帮你解决Object.defineProperty()所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部