Authorization: API_KEY:GENERATED_SIGNATURE
我正在学习吸气剂和二传手。然后我意识到Javascript在设置Authorization
的值时没有抛出任何错误而没有它的setter方法。
构造函数外部的var vehicle = function(){
var type;
var tyre;
this.tellTyres = function(){
console.log(type + " has " + tyre + " tyres");
};
this.__defineGetter__("type", function(){
return type;
});
this.__defineSetter__("type", function(val){
type = val;
});
this.__defineGetter__("tyre", function(){
return tyre;
});
// this.__defineSetter__("tyre", function(val){
// tyre = val;
// });
};
var car = new vehicle();
car.type = "Car";
car.tyre = 4;
console.log(car.tyre);
car.tellTyres();
属性会发生什么。 4值存储在哪里?它会覆盖吗?
答案 0 :(得分:2)
JavaScript对象更像是字典,而不像Java对象。这意味着您只需使用属性访问器运算符.
和[]
来设置和获取对象的属性:
var obj = { foo: 'bar' };
obj.baz = 17;
console.log(obj.foo, obj.baz); // logs '"bar" 17'
这绝对没问题。
但有时,只要有人修改了对象的属性,你就想做某事。在这些情况下,您可以为该属性定义getter或setter函数(使用Object.defineProperty
而不是defineGetter
和defineSetter
):
var obj = { foo: 'bar' };
Object.defineProperty(obj, 'baz', {
get: function () {
console.log('Someone wants to read the property "baz"!');
return 34;
},
set: function (value) {
console.log('You are not allowed to modify the property "baz"!');
}
});
obj.baz = 17; // doesn't work
console.log(obj.foo, obj.baz); // logs '"bar" 34'
创建new vehicle()
时,您可以创建一个新对象,您可以在其上设置或读取属性。你不需要getter和setter。