本文主要是介绍object.defineproperty数据劫持,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
object.defineproperty()
1.定义:该方法是在对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。监听对象下的某一个属性,做数据劫持处理。
2.语法:Object.defineProperty(obj, prop, descriptor)
(1) 参一:要定义属性的对象。
(2) 参二:要定义或修改的属性的名称或 Symbol (被监听的属性)。
(3) 参三:要定义或修改的属性描述符(存取描述符:options{getter,setter})。
(4) 返回值:被传递给函数的对象。
注意:应在Object构造器对象上调用这个方法,而不是在任意一个Object类型的实例上调用。
以下面代码为例:
var obj = {
num:9,
};
// _num 作为num的代理
let _num = obj.num;
Object.defineProperty(obj,‘num’,{
// 数据劫持:获取数据但还没有取到的时候,做拦截处理,拦截处理完毕返回
get(){
// 拦截
console.log(‘触发get’);
// return 释放,最终获取数据
return _num;//没有return就不释放,获取不到值
},
set(val){
这篇关于object.defineproperty数据劫持的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!