在内部创建对象实例
Create an instance of object internally
我尝试在内部创建一个对象实例,如下所示:
var oo = function(){
return new func();
}
var func = function(){
this.name;
this.age;
};
func.prototype = {
setData: function(name, age){
this.name = name;
this.age = age;
},
getData: function (){
return this.name + " " + this.age;
}
}
使用时出现错误oo.setData is not a function
。
oo.setData("jack", 15);
console.log(oo.getData());
我的代码有什么问题?
发生这种情况是因为 oo 不是 "func",oo returns 是一个新函数。您可以使用
设置数据
oo().setData('jack',15);
但是你无法访问它。
您也可以使用
var newfunc = oo();
newfunc.setData('jack',15);
newfunc.getData();
oo
是一个创建对象的函数。
var oo = function(){ //the oo variable is used to create func() objects
return new func();
}
var func = function(){ //function
this.name;
this.age;
};
func.prototype = { //define properties to func
setData: function(name, age){
this.name = name;
this.age = age;
},
getData: function (){
return this.name + " " + this.age;
}
}
//create instance
var myObject = oo();
//or
var myObject = new func();
//Use
myObject.setData("jack", 12);
//Get a property
console.log(myObject.getData())
我尝试在内部创建一个对象实例,如下所示:
var oo = function(){
return new func();
}
var func = function(){
this.name;
this.age;
};
func.prototype = {
setData: function(name, age){
this.name = name;
this.age = age;
},
getData: function (){
return this.name + " " + this.age;
}
}
使用时出现错误oo.setData is not a function
。
oo.setData("jack", 15);
console.log(oo.getData());
我的代码有什么问题?
发生这种情况是因为 oo 不是 "func",oo returns 是一个新函数。您可以使用
设置数据oo().setData('jack',15);
但是你无法访问它。
您也可以使用
var newfunc = oo();
newfunc.setData('jack',15);
newfunc.getData();
oo
是一个创建对象的函数。
var oo = function(){ //the oo variable is used to create func() objects
return new func();
}
var func = function(){ //function
this.name;
this.age;
};
func.prototype = { //define properties to func
setData: function(name, age){
this.name = name;
this.age = age;
},
getData: function (){
return this.name + " " + this.age;
}
}
//create instance
var myObject = oo();
//or
var myObject = new func();
//Use
myObject.setData("jack", 12);
//Get a property
console.log(myObject.getData())