首先
var a={w:'www'}
var b=a
b.w="sss"
alert(a.w)//也被改变 弹出sss第一种方案是这样
function $type(x){
if(typeof x=='object'){
if(x instanceof Array){
return 'array'
}else if(x instanceof Function){
return 'function'
}else{
return 'object'
}
}else{
return typeof x
}
}function $unlink(object){
var unlinked;
switch ($type(object)){
case 'object':
unlinked = {};
for (var p in object) unlinked[p] = $unlink(object[p]);
break;
case 'array':
unlinked = [];
for (var i = 0, l = object.length; i < l; i++) unlinked[i] = $unlink(object[i]);
break;
default: return object;
}
return unlinked;
};var a={w:"www"}
var b=$unlink(a)
b.w="sss"
alert(a.w)//没有被改变 弹出www第2中方案是mootools中的方案 原理是这样的
var w={w:"www"}var a=function(){}
a.prototype=w
var aa=new aaa.w="sss"
alert(w.w)//没有改变w.w,还是原来的www但是它写的方法却让我很困惑 因为实现不了 接触关联
看看它的代码吧
function $type(x){
if(typeof x=='object'){
if(x instanceof Array){
return 'array'
}else if(x instanceof Function){
return 'function'
}else{
return 'object'
}
}else{
return typeof x
}
}var w={w:'wwww'}
var reset = function(object,key){
if (key == null) {
for (var p in object) reset(object, p);
return object;
}
delete object[key];//这为什么要delete啊??而且delete不了prototype上的属性 我晕~
switch ($type(object[key])){
case 'object':
var F = function(){};
F.prototype = object[key];
var i = new F;
object[key] = Object.reset(i);//
break;
}
return object
}
var b=reset(w)
b.w="sss"
alert(w.w)//w.w的值被改变为 sss虽然它的结果不对 但是对思想我还是觉得很对的? 请问大家 为什么不能分开关联呢? 哪错了?reset也在下面这种情况下 调用
var a=function(){
reset(this)
return this
} 不解 为什么mootools要这么做
var a={w:'www'}
var b=a
b.w="sss"
alert(a.w)//也被改变 弹出sss第一种方案是这样
function $type(x){
if(typeof x=='object'){
if(x instanceof Array){
return 'array'
}else if(x instanceof Function){
return 'function'
}else{
return 'object'
}
}else{
return typeof x
}
}function $unlink(object){
var unlinked;
switch ($type(object)){
case 'object':
unlinked = {};
for (var p in object) unlinked[p] = $unlink(object[p]);
break;
case 'array':
unlinked = [];
for (var i = 0, l = object.length; i < l; i++) unlinked[i] = $unlink(object[i]);
break;
default: return object;
}
return unlinked;
};var a={w:"www"}
var b=$unlink(a)
b.w="sss"
alert(a.w)//没有被改变 弹出www第2中方案是mootools中的方案 原理是这样的
var w={w:"www"}var a=function(){}
a.prototype=w
var aa=new aaa.w="sss"
alert(w.w)//没有改变w.w,还是原来的www但是它写的方法却让我很困惑 因为实现不了 接触关联
看看它的代码吧
function $type(x){
if(typeof x=='object'){
if(x instanceof Array){
return 'array'
}else if(x instanceof Function){
return 'function'
}else{
return 'object'
}
}else{
return typeof x
}
}var w={w:'wwww'}
var reset = function(object,key){
if (key == null) {
for (var p in object) reset(object, p);
return object;
}
delete object[key];//这为什么要delete啊??而且delete不了prototype上的属性 我晕~
switch ($type(object[key])){
case 'object':
var F = function(){};
F.prototype = object[key];
var i = new F;
object[key] = Object.reset(i);//
break;
}
return object
}
var b=reset(w)
b.w="sss"
alert(w.w)//w.w的值被改变为 sss虽然它的结果不对 但是对思想我还是觉得很对的? 请问大家 为什么不能分开关联呢? 哪错了?reset也在下面这种情况下 调用
var a=function(){
reset(this)
return this
} 不解 为什么mootools要这么做
解决方案 »
- 【求解答】下面的javascipt中的括号 分别是什么意思
- 如何用 js把以\u开头的字符转换成原文?
- 关于调用js的焦点图问题
- asp里如何用两个select实现级联效果
- Flash的超链接
- 怎样获取整个页面中所有DIV的ID号,并且要求ID号的位数必须大于7。
- 能不能在HTML里通过调用外部JS生成下面的样子!散分了,高手过来看看,在线等!!
- 请问大家一个JAVAScript的问题,如何得到一个文本筐中输入字符的长度?(汉字算两个字符)
- javascript 可以获取本地得ip地址吗?
- 请问各位高手,怎样实现类似于“正在登陆,请稍侯....”的效果!
- 帮忙看看是干什么用的?
- 调用几次?怎样调用 才能弹出ddd???
是么?
看个例子
function $type(x){
if(typeof x=='object'){
if(x instanceof Array){
return 'array'
}else if(x instanceof Function){
return 'function'
}else{
return 'object'
}
}else{
return typeof x
}
}var w={w:'wwww',a:{a:"aaaa"}}
var reset = function(object,key){
if (key == null) {
for (var p in object) reset(object, p);
return object;
}
delete object[key];//
switch ($type(object[key])){
case 'object':
var F = function(){};
F.prototype = object[key];
var i = new F;
object[key] =reset(i);//上面这个地方写错了 Object.reset应为reset
break;
}
return object
}
reset(w)
for(var i in w)
alert(i)//什么都没了但是 小弟认为可以更简单些的
var w={w:'wwww',a:{a:"aaaa"}}
var reset = function(object,key){
if (key == null) {
for (var p in object) reset(object, p);
return object;
}
delete object[key];//
switch ($type(object[key])){
case 'object':reset(object[key]);//这样不就行了???mootools在舍近求远???还是另有他情???
break;
case 'array': object[key] = $unlink(object[key]); break;//mootools里还有这行
}
return object
}
reset(w)
for(var i in w)
alert(i)//也清除完了不清楚有什么不同 还请高手指点迷津
F.prototype = object[key];
var i = new F;
object[key] =reset(i);
这样的调用方法,自己分解开
形成了下面的代码 小弟认为和上面的原理 应该是一样的 但是为什么结果不一样呢????var w={w:'wwww',a:{a:"aaaa"}}
var a=function(){}
a.prototype=w.a
var aa=new adelete aa.a//这样不能删除 但为什么上面的模式能删除呢???
alert(aa.a)//aaa
w.a=aa
alert(w.a.a)//弹出aaa
老兄,对象属性,{a:....},跟prototype 过来的属性没有可比性,
通过prototype 过来的属性是不能被删除的
switch ($type(object[key])){
case 'object':reset(object[key]);//这样不就行了???mootools在舍近求远???还是另有他情???
break;
case 'array': object[key] = $unlink(object[key]); break;//mootools里还有这行
}
始终是没有用的啊...
我觉得是放错位置了吧...不过要知道他reset的本意.