实现这个变态的js

echoxue 2010-06-04 01:25:14
<SCRIPT LANGUAGE="JavaScript">
function User(name)
{
this.name=name;
this.getUserName = function()
{
return this.name;
} ;
function test(obj)
{
return obj;
}
}

window.onload=function()
{

var user = new User('test');
alert(user.getUserName());

alert(user.test('test'));//这个如何能实现啊,是否可以实现啊,我感觉应该可以的啊?请高手指点

}

</SCRIPT>
...全文
284 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
sugar8049 2010-06-07
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
xk1126 2010-06-05
  • 打赏
  • 举报
回复
this.getTest=function(obj)
{
return test(obj);
}
function test(obj){
return obj;
}
冰刀先生 2010-06-05
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
root_lee 2010-06-05
  • 打赏
  • 举报
回复
学习,学习
leemiki 2010-06-05
  • 打赏
  • 举报
回复
逛逛,学习下,O(∩_∩)O
rainsilence 2010-06-04
  • 打赏
  • 举报
回复
不用this,不用prototype,无法实现

function Test() {
function sayHello() {}

}


又可写成
function Test() {
var sayHello = new Function();
}

因此sayHello是无法再function外用的
这两种写法没有区别看懂否?
猿敲月下码 2010-06-04
  • 打赏
  • 举报
回复
<SCRIPT LANGUAGE="JavaScript">
<!--

function User(name)
{
this.name=name;
this.getUserName = function()
{
return this.name;
} ;
User.prototype.test = function(obj)
{
return obj;
}
}

window.onload=function()
{

var user = new User('test');
alert(user.getUserName());

alert(user.test('test2'));//这个如何能实现啊,是否可以实现啊,我感觉应该可以的啊?请高手指点

}

//-->
</SCRIPT>
rainsilence 2010-06-04
  • 打赏
  • 举报
回复
var obj = new Object();
obj.test = function() {};

以上那句话
,写在function里面就变成了
this.test = function() {};

函数指针必须要和对象或者与原型相关联,
function Test() {}

Test.prototype.test = function() {};


才能使用

function Test() {
function test() {}
}

这样的,跟对象毫无关系。外界无法引用到此函数指针。只能在Test内部使用。你还是放弃吧
echoxue 2010-06-04
  • 打赏
  • 举报
回复
再自己up
踏雪听雨 2010-06-04
  • 打赏
  • 举报
回复
//定义一个函数func1,具有属性p和方法A
function func1(){
this.p="func1-";
this.A=function(arg){
alert(this.p+arg);
}
}
//定义一个函数func2,具有属性p和方法B
function func2(){
this.p="func2-";
this.B=function(arg){
alert(this.p+arg);
}
}
var obj1=new func1();
var obj2=new func2();
obj1.A("byA"); //显示func1-byA
obj2.B("byB"); //显示func2-byB
foolbirdflyfirst 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 echoxue 的回复:]

引用 9 楼 foolbirdflyfirst 的回复:
想让user对象找到test方法( user.test() ),那么test方法必须置于user相关的prototype链中

JScript code
function User(name)
{
this.name=name;
this.getUserName = function()
{
return this.na……
[/Quote]
嗯,一个对象要找到某个方法,首先从本对象找,也就是把test变成对象本身的方法,即改成
function User(name)
{
this.name=name;
this.getUserName = function()
{
return this.name;
} ;
this.test = function(obj){return obj}
}

那么user对象就可以马上找到test方法,并执行,
如果不改成this.test= function(){}
那么user对象本身并没有test方法,在本对象找不到test方法的情况下,user对象就会顺着prototype链一层层找test方法。
艾瑞儿 2010-06-04
  • 打赏
  • 举报
回复
每个对象都有对应的原型函数prototype

User.prototype.test=function test(obj)
{
return obj;
}

这样就给User定义了一个方法,User的对象中都可以调用这个方法了
echoxue 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 foolbirdflyfirst 的回复:]
想让user对象找到test方法( user.test() ),那么test方法必须置于user相关的prototype链中

JScript code
function User(name)
{
this.name=name;
this.getUserName = function()
{
return this.name;
} ;

……
[/Quote]

这个是可以实现,但是还是把test写道外面的属性里.难道不能建立里面user function{}里面吗?用什么方法实现关联吗?

各位再指点........

谢谢!
rainsilence 2010-06-04
  • 打赏
  • 举报
回复
这个不能实现
function Test() {
function test2() {

}
}

test2对于外部来说是不可见的
new Test()的时候,由于test2并没有与Test的对象进行关联,所以外界也是不可引用的
但是在Test内部可以使用。你可以近似的看成是java中的private 方法
foolbirdflyfirst 2010-06-04
  • 打赏
  • 举报
回复
想让user对象找到test方法( user.test() ),那么test方法必须置于user相关的prototype链中
function User(name)
{
this.name=name;
this.getUserName = function()
{
return this.name;
} ;

}
User.prototype =
{
test : function(obj)
{
return obj;
}
}

北京不不 2010-06-04
  • 打赏
  • 举报
回复
错误~!
over~
北京不不 2010-06-04
  • 打赏
  • 举报
回复
<SCRIPT LANGUAGE="JavaScript">
function User(name)
{
this.name=name;
this.getUserName = function()
{
return this.name;
} ;
function test(name)
{
return name;
}
return test(name);
}

window.onload=function()
{

var user = new User('test');
alert(user.getUserName());

alert(User('sdf1'));
}
</script>
浪尖赏花 2010-06-04
  • 打赏
  • 举报
回复
受作用域限制,在外部不能直接访问内部变量
可以这样
         this.getTest=function(obj)
{
return test(obj);
}
function test(obj){
return obj;
}
qq591285015 2010-06-04
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
echoxue 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lihui_shine 的回复:]
this.test=function(obj)
{
return obj;
}
[/Quote]

呵呵,这个我知道的啊,我就是想怎么建立这个没有this的对象关联啊,难道没有办法吗?
加载更多回复(3)

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧