Mar*_*ato 1 javascript jquery 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!'
}
};
Run Code Online (Sandbox Code Playgroud)
但是下面的代码返回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'
}
};
Run Code Online (Sandbox Code Playgroud)
在第一段代码中,您实际创建并定义了该属性:this.myProperty = 'Hello world!';在此之前,此属性不存在.
在第二段代码中,您永远不会定义属性.
将其更改为:
function MyClass() {
//NOT "var", but "this."
this.myProperty = 'Hello world!';
};
Run Code Online (Sandbox Code Playgroud)
另一种方法(如果值myProperty应默认为某个值,则将其放入原型中:
MyClass.prototype = {
//Now all instantiations will have this preset
myProperty: "Hello World",
console: function() {
console.log(this.myProperty);
}
};
Run Code Online (Sandbox Code Playgroud)