我开始使用原型(prototype),如果我使用代码,我得到了预期的结果:
$(document).ready(function() {
var MyObject = new MyClass();
MyObject.assign();
MyObject.console();
});
function MyClass() {
var myProperty;
};
MyClass.prototype = {
assign: function() {
this.myProperty = 'Hello world!';
},
console: function() {
console.log(this.myProperty); // Shows 'Hello world!'
}
};
但是下面的代码返回undefined
。我不明白为什么,有人可以帮助我吗?
$(document).ready(function() {
var MyObject = new MyClass();
MyObject.console();
});
function MyClass() {
var myProperty = 'Hello world!';
};
MyClass.prototype = {
console: function() {
console.log(this.myProperty); // Shows 'undefined'
}
};
最佳答案
在第一段代码中,您实际上创建并定义了该属性:this.myProperty = 'Hello world!';
在此之前,该属性不存在。
在第二段代码中,您从未定义属性。
将其更改为:
function MyClass() {
//NOT "var", but "this."
this.myProperty = 'Hello world!';
};
另一种方法(如果 myProperty
的值应该默认为某个值,是将其放入原型(prototype)中:
MyClass.prototype = {
//Now all instantiations will have this preset
myProperty: "Hello World",
console: function() {
console.log(this.myProperty);
}
};
关于javascript - 在原型(prototype)的构造函数中初始化属性时获取 'undefined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26187373/