我自己写了个对象,如下:obj={
a :[],
b :{},
c : function(){
……
},
d : function(){
obj.a.push('3');
obj.c();
}
};请问这个obj如何定义,使在c、d函数里面,直接this 调用该对象的变量?
也就是使this指向Obj。
小弟 对prototype理解不深,不知道是不是通过它实现。
a :[],
b :{},
c : function(){
……
},
d : function(){
obj.a.push('3');
obj.c();
}
};请问这个obj如何定义,使在c、d函数里面,直接this 调用该对象的变量?
也就是使this指向Obj。
小弟 对prototype理解不深,不知道是不是通过它实现。
解决方案 »
- EXT grid 不显示
- 一个棘手的问题,在线等待......
- 问一个简单问题,javascript中单引号和双引号的处理
- 这条语句怎么错了?
- Js...............................waiting.......
- 要实现下拉菜单的连动,代码没有报错,请指教????
- 急救:JS声明自定义对象出错!
- 哪里有大量的js代码下载的?
- 怎么提取其中的text文本内容?如:<td> text <input type="text" name="test"> </td>,
- Angluar Build之后用谷歌浏览器打包之后提示我跨域,没有使用http协议获取
- JQuery UI autocomplete FireFox 编码格式不正常
- 这段JS代码在火狐中为什么不管用
this.c();
obj={
a :[],
b :{},
c : function(){
……
},
d : function(){
this.a.push('3');
this.c();
}
};
你写的这段代码就可以直接使用this替代obj
me:this,
a :[],
b :{},
c : function(){
……
},
d : function(){
this.a.push('3');
this.c();
}
};
var obj = {};
就等于var obj = new Object();而Object并没有prototype。
只有Function才有prototype在Object里,this永远指向他的挂靠对象。因为他可以看成是已经实例化的对象
在Function里
function Test(name) {
this.name = name;
}
Test.prototype = {
sayHello: function() {
alert(this.name);
}
};
new Test().sayHello();
function必须定义在原型上,this才能指向对象。而不是函数对象
比如你定义一个 var i = 0; // 此时有隐藏的this,this为window
你定义一个 var c = function(){} // 此时的this仍然为window。谁的函数,window的
但是比如lz上面定义的方法 var obj = {a:1,b : function(){return this.a++;}}
如果执行一句 ojb.b(); 函数被执行一般都是被副本被拷贝至内存空间,谁的内存空间,this的,this是谁,obj。所以在编译时this被替换成obj。
如果 var f = function () { return this.a ;} ; f(); // 这样就会报错,window没有a属性。
如果把 obj.f =f ; obj.f(); // 这样就好了,因为 this 有人认领了。
this可以随便使用,但是不能随便调用。
你这样说,lz怎么看得懂。
this代表离他最近的对象,在最顶级函数调用的时候,代表window例1:
function test() {
alert(this);
}
alert(this); // window
new test();// Object(代表new出来的object)
test(); // window
例2:
function Father(name) {
this.name = name;
}
function Child(name) {
this.Father = Father;
// Father的this挂靠到Child上,形成对象冒充(也就是说,Father中的this,就是现在看到的this)
this.Father(name);
delete(this.Father);
}
alert(new Child("123").name);
使用createDelegate方法,问题解决了。