JavaScript对象定义属性和最大值
我正在学习JavaScript中OOP的基础知识,我对这个示例有一些问题:JavaScript对象定义属性和最大值,javascript,oop,getter-setter,Javascript,Oop,Getter Setter,我正在学习JavaScript中OOP的基础知识,我对这个示例有一些问题: var Human = function (first, surname) { var x = {}; Object.defineProperties(x, { first: { get: function () { return this.first; }, set: function
var Human = function (first, surname) {
var x = {};
Object.defineProperties(x, {
first: {
get: function () {
return this.first;
},
set: function (value) {
this.first = value;
}
},
surname: {
get: function () {
return this.surname;
},
set: function (value) {
this.surname = value;
}
}
});
return x;
};
var alex = new Human("Alex", "Corlette");
console.log(alex)代码>输出:
{}
console.log(alex.first)代码>输出:
未捕获范围错误:超过最大调用堆栈大小
有人知道我做错了什么吗?问题在于范围。因为您正在定义一个属性,并且在getter和setter中引用相同的getter和setter 可以通过删除this关键字来修复该示例
var Human = function (first, surname) {
var x = {};
Object.defineProperties(x, {
first: {
get: function () {
return first;
},
set: function (value) {
first = value;
}
},
surname: {
get: function () {
return surname;
},
set: function (value) {
surname = value;
}
}
});
return x;
};
var alex = new Human("Alex", "Corlette");