gpt4 book ai didi

javascript - 当用户重新定义我已经在类中预定义的变量时抛出异常?

转载 作者:行者123 更新时间:2023-12-03 03:11:11 25 4
gpt4 key购买 nike

当用户尝试重新定义我已在框架中预定义为类的变量时,如何引发异常?

框架脚本

function Car(){
this.loc=new Location();
}

function Location(x,y,z){
this.x=x;
this.y=y;
this.z=z;
}

示例用户脚本

mycar=new Car();
mycar.loc.x=100;
mycar.loc.y=10;
mycar.loc.z=100;

当用户不小心这样做时,有没有办法抛出错误:

mycar=new Car();
mycar.loc=5; //assigns a number to what is supposed to be a Location class.

最佳答案

是的,您可以使用defineProperty 。这是一个(未经测试的)示例:

function Car(){
let loc = new Location();

Object.defineProperty(this, "loc", {
get: function() { return loc; },
writable: false,
});
}

function Location(x,y,z){
this.x=x;
this.y=y;
this.z=z;
}

更新:

要真正抛出错误,您需要这样做

   Object.defineProperty(this, "loc", {
get: function() { return loc; },
set: function(value) {
if (value instanceof Location) {
loc = value
} else {
throw Error('Dont do this')
}
},
});

关于javascript - 当用户重新定义我已经在类中预定义的变量时抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46943184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com