给出这样一个对象:
var MyObj = {
bar: 10,
foo: function() {
alert(MyObj.bar);
}
}
我如何从MyObj
一般引用MyObj.foo
,以便在我将var MyObj
更改为var MyObj2
时,我不需要修改foo
功能
答案 0 :(得分:1)
如果您希望将MyObj
视为一个类,您可以执行lumio建议的操作,或者您可以执行类似
function MyObj(){
this.bar = 10;
this.foo = function(){
return this.bar;
}
}
var a = new MyObj();
var b = new MyObj();
b.bar = 5;
console.log(a.foo(), b.foo()) // 10 5
如果相反,您只想引用对象的bar
值,那么您只需将alert(MyObj.bar);
替换为alert(this.bar);
答案 1 :(得分:0)
课程对你有很大的帮助。在ES5中,可以像这样创建类:
function MyObj() {
this.bar = 10;
}
MyObj.prototype.foo = function() {
console.log( this.bar );
}
var objInstance = new MyObj;
objInstance.foo();
var objInstance2 = new MyObj;
objInstance2.bar = 20;
objInstance2.foo();

ES6可以提供更好的符号:
class MyObj {
constructor() {
this.bar = 10;
}
foo() {
console.log( this.bar );
}
}
var objInstance = new MyObj;
objInstance.foo();
var objInstance2 = new MyObj;
objInstance2.bar = 20;
objInstance2.foo();

使用babel将其转换为ES5。