<script>
function a()
{
var self = this;
var trim = function(str){
return str.replace(/(^s*)|(s*$)/g, "")
}
var start = function(){
self[trim(" xxxx ")] = "aaaaaa"; //xxxx 和 aaaa 象征性的文本,表意
}
start();
}
</script>本人JS小鸟,对上面的代码块百思不得其解,希望各位帮忙详解下,正则还能勉强理解,可到了:self[trim()]这个种形式,就很郁闷了忘大家不吝赐教啊。
xx.trim("xxx");我不能理解的是在a里面的这一段,self[trim(" xxxx ")] = "aaaaaa";
是否this[Function] == this.Function? 那么给this[Function] = value, 是否就等同于
this.Function(value)?
self["XXXX"]="aaaaa";
即self.xxxx = "aaaa".
我是这么理解的.
self.xxxx 是从何而来啊?没有xxxx函数,也没有xxxx属性啊?代表什么?
self[这里放个函数?]
还是很纠结啊。
xx.trim("xxx");
这种用法有误,var trim = function(str),xx.trim 外部访问不到
var obj = new Object();obj["name"] = 'test';alert(obj.name);
因为你这里trim(" xxxx ")他是变量,用.是出不来的。所以用[],也能达到指向属性的效果下面再说self的问题。这里涉及到闭包
<script>
function al()
{
var self = this;
var trim = function(str){
alert('xxxx');
}
var start = function(){
self[trim(" xxxx ")] = "aaaaaa"; //xxxx 和 aaaa 象征性的文本,表意
}
start();
} function say()
{
var xx = new al();
xx.trim("xxx");
}
</script>
<body onload="say()">可以啊。
this.name = "test";
}这个this,指向离他最近的function本身var start = function() {
this.name = "test";
}这种写法和上面那种没有任何区别function Test() { var start = function() {
this.name = "123";
} start();}var test = new Test();// undefined
alert(test.name);//undefined
alert(test.start);以上代码证明了,写在function中的this,并没有连到Test对象中。因为start function比Test关系更近为了解决以上问题,可以在Test中,强制var targetThis = this;因为内部类可以调用外部类资源,使得这一调用成为可能function Test() { var targetThis = this;
var start = function() {
targetThis.name = "123";
} start();}var test = new Test();// 123
alert(test.name);加上上面的回答,也可以改写成
function Test() { var targetThis = this;
var start = function() {
targetThis["name"] = "123";
} start();}var test = new Test();// 123
alert(test.name);
另外,还有一问:self[trim(" xxxx ")] = "aaaaaa";
//按8L大虾的语义,这里给trim传入xxxx,?然后又给trim赋值aaaaaa?,那它该怎么处理呢?
然后self[根据字符串找到属性]
最后self[属性名]=......赋值
我不理解,在new a的时候给传进取的值给了谁?给了a本身?(麻烦您到帖子上回复,谢谢了)答:
function a(test) {
...
}这样的代码可以看成是a的构造函数new a("xxxxxx");
的时候,可以看成调用了这个函数。这个时候,如果
function a(test) {
this.test = test;
}
那么指向了a对象的属性。