使用Object.defineProperty修改对象的某个属性值和直接赋值的区别是什么?

举个例子:

let obj ={a:10}

 

obj.a=50

Object.defineProperty( obj , 'a' , 50 )

这两种方式的区别是什么,各自的利弊是什么

直接赋值只能是赋值。

Object.definePropert 不仅可以赋值,还可以修饰属性的一些功能,比如

configurable

enumerable

value

writable

get

set

Object.defineProperty  相当于定义了一个新的obj对象