gpt4 book ai didi

Javascript 访问函数内的父对象

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

我有这个汽车功能:

var Car = function(vendor, model, year) {
return {
vendor: vendor,
model: model,
year: year,
name: (function() {
return vendor + " " + model + " " + year;
})()
};
};
var foo = Car("Toyota","Corola",2007);
alert(foo.name); //alerts "Toyota Corola 2007"

这可行,但我希望名称能够根据 vendor 型号年份.

taxi.vendor = "Mitsubishi";
alert(taxi.vendor); //still alerts "Toyota Corola 2007"

如何根据 vendor 属性的更改使其向 Mitsubishi Corola 2007 发出警报?

编辑:捕获 - name 必须保留为不需要作为函数调用的属性。

最佳答案

使用最新版本的 WebKit(Safari、Chrome)或 Firefox,您可以 define getter and setter functions :

var o = {a: 7, get b() {return this.a + 1;}, set c(x) {this.a = x / 2}};
o.b // result is 8
o.a = 10
o.b // result is 11

然后你会这样做:

var Car = function(vendor, model, year) {
return {
vendor: vendor,
model: model,
year: year,
get name() { return this.vendor + " " + this.model + " " + this.year; }
};
};

并获得您想要的结果。

我不知道 IE 或 Opera 是否支持这个或哪些版本。如果您需要支持除最新 Safari、Chrome 或 Firefox 浏览器之外的任何浏览器,那么您最好使用函数来访问名称,而不是将其保留为属性:

var Car = function(vendor, model, year) {
return {
vendor: vendor,
model: model,
year: year,
name: function() { return this.vendor + " " + this.model + " " + this.year; }
};
};

然后:

var foo = Car("Toyota","Corola",2007);
alert(foo.name()); //alerts "Toyota Corola 2007"
foo.vendor = "Mitsubishi";
alert(foo.name()); //alerts "Mitsubishi Corola 2007"

关于Javascript 访问函数内的父对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6406612/

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