Javascript 什么';DOM节点对象和JS对象之间的区别是什么?

Javascript 什么';DOM节点对象和JS对象之间的区别是什么?,javascript,Javascript,众所周知,我们可以使用Object.defineProperty()来定义对象的一些属性,但是当我运行下面的代码时,它会抛出一个错误!我认为Dom对象和js对象{}之间可能有一些区别。如果有人能帮我,我将非常感激 var inn = document.getElementById("search_form_input");//a input element inn.nodeType;// 1 elementNode inn.value;//output the value typeOf(inn)

众所周知,我们可以使用Object.defineProperty()来定义对象的一些属性,但是当我运行下面的代码时,它会抛出一个错误!我认为Dom对象和js对象{}之间可能有一些区别。如果有人能帮我,我将非常感激

var inn = document.getElementById("search_form_input");//a input element
inn.nodeType;// 1 elementNode
inn.value;//output the value
typeOf(inn);//object
// inn is an Object , so I try the below function
Object.defineProperties(inn,'value',{
    set:function(){
       return console.log("setting inn value")
    }
})
这会产生以下错误:

VM710:1 Uncaught TypeError: Property description must be an object: v
   at Function.defineProperties (<anonymous>)
   at <anonymous>:1:8
VM710:1未捕获类型错误:属性描述必须是对象:v

在Function.defineProperties(

Object.defineProperties(obj,props)
中有两个参数,第二个是对象。您将字符串作为第二个参数传递


请参见

您正在混合Object.defineProperties和Object.defineProperty

检查两个功能文档:

Object.defineProperty(对象、属性、描述符)

Object.defineProperties(对象、道具)

假设您想使用
Object.defineProperty
,那么如果您使用了正确的函数,您的代码就会正常工作:

var inn=document.getElementById(“搜索表单输入”);//输入元素
inn.nodeType;//1 elementNode
value;//输出值
console.log(typeof inn);//对象
//inn是一个对象,所以我尝试下面的函数
Object.defineProperty(inn,'value'{
set:function(){
return console.log(“设置inn值”)
}
});
inn.value=“测试”

拼写错误!我意识到了我的问题,非常感谢还有一个问题:当我通过文本更改
inn.value
输入元素中的某个值时,set:函数预计会执行,但事实并非如此!你能帮我吗?如果你有其他问题,你应该问一个新问题。更多的人会这样做我可以帮助你。如果我能帮助你,我也会很高兴。我的级别太低,无法再问新问题,谢谢你的回答。mybe我应该尝试自己解决它。哈哈。好吧,关于这个问题。在我添加到答案中的代码片段中,设置inn.value属性时会调用set函数。