现有一段代码function New(aClass,parameters){
return function new_(){
this.type=aClass;
if(aClass.initialize)
aClass.initialize.apply(this,parameters);
}
new_.prototype=aClass;
return new new_();
}var obj={ name:"",age:"",initialize:function(n,a,callback){ this.name=n;this.age=a;this.callback=callback;}}
var myobj=New(obj,["zgm",20,mycallback]);//问题出在判断 if(aClass.initialize)上 上面的代码是正确的 可以运行 可是为什么当我把initialize方法定义到obj的原型中时 像这样
var obj={name:"",age:""};
obj.prototype={
initialize:function(n,a,callback){
this.name=n; ....
}
}
//条件判断if(aClass.initialize) 就认为 initialize不存在呢???????
还有 当我把New方法 改为
var Class={
create:function(){
this.initialize.apply(this,arguments);
}
}
运行就有问题了 这两个方法有什么区别吗
表达不太清楚 希望您解答
return function new_(){
this.type=aClass;
if(aClass.initialize)
aClass.initialize.apply(this,parameters);
}
new_.prototype=aClass;
return new new_();
}var obj={ name:"",age:"",initialize:function(n,a,callback){ this.name=n;this.age=a;this.callback=callback;}}
var myobj=New(obj,["zgm",20,mycallback]);//问题出在判断 if(aClass.initialize)上 上面的代码是正确的 可以运行 可是为什么当我把initialize方法定义到obj的原型中时 像这样
var obj={name:"",age:""};
obj.prototype={
initialize:function(n,a,callback){
this.name=n; ....
}
}
//条件判断if(aClass.initialize) 就认为 initialize不存在呢???????
还有 当我把New方法 改为
var Class={
create:function(){
this.initialize.apply(this,arguments);
}
}
运行就有问题了 这两个方法有什么区别吗
表达不太清楚 希望您解答
obj.prototype={
initialize:function(n,a,callback){
this.name=n; ....
}
}等价于:obj={name:"",age:"",prototype:{
initialize:function(n,a,callback){
this.name=n; ....
}
}};看懂了么?对象的prototype操作是没用的,只是多了一个属性而已。对象这个类似function的prototype是内部对象,一般是访问不到的。但firefox下可以访问,具体属性记不太清了。好像是__proto__
谢谢啦 这个我懂了 还有一个问题就是当我用
var Class={
create :function(){
this.initialize.apply(this,argments);
}
用这个方法创建对象的时候 如果 initialize(n,a,callback)有参数的话 我应该怎样吧参数传递过去呢
var obj=Class.create(); 参数应该写到create(这里吗?) 应该怎样写呢}
create: function() {
return function () {
this.initialize.apply(this, arguments);
}
}
} function callback1() {
alert("aaaa");
}
var obj = { name: "", age: "", initialize: function(n, a, callbacks) { this.name = n, this.age = a, this.callback = callbacks }, registerCallback: function() { alert("bbbbbb"); } }; var myobj = Class.create("zgm", 20, callback1);
alert(myobj.name);这样写对吗 那为什么我最后获取的为空值呢 是哪里写的不正确 还望指出来啊
你的错误楼上说的很对
var Class = {
create: function() {
return function () {
this.initialize.apply(this, arguments);
}
}
} function callback1() {
alert("aaaa");
}
var obj = { name: "", age: "", initialize: function(n, a, callbacks) { this.name = n, this.age = a, this.callback = callbacks }, registerCallback: function() { alert("bbbbbb"); } }; var myobj = Class.create("zgm", 20, callback1); //我这里传的参 能不能在obj 的initialize构造函数里面获得呢 如果不能应该怎样正确的传递initialize需要的参数 ? 希望前辈贴出代码 我好研究
alert(myobj.name);
还有这点困惑了
var Node=Class.create();
Node.prototype={
initialize:function(param1,param2){
do someting here...
}
}var nodeObj=new Node(par1,parm2);