资深进,请问javascript的new创建问题?

来源:百度知道 编辑:UC知道 时间:2024/06/23 04:21:56
资深进,请问javascript的new创建问题?

<script language="javascript">
function kk(){
var as=new Object;
as.k=123;
return as;<-----------------返回实例对象as.
}
var nn=new kk();<--------------这里kk()先返回(实例对象as),再用new创建(as对象实例)的(实例nn)没发生错误.
alert(nn.k);
</script>

<script language="javascript">
var s=new Object();//s是对象实例
var k=new s;<----------------------------用new创建(s对象实例)的实例k,为什么就发生错误!
</script>

new kk()这里kk()先会返回一个对象实例,为什么从函数里返回出来的对象实例,都可以跟new,

如果不是函数里返回出来的对象实例s,一用new,就错误没东西了?

请最详细的指教一下.

new s?!!!

s是对象!对象是不可以new的。
你完全可以写成 var k=s;啊。
new kk()没有出错不是你理解的那样。应该是kk()本身就是一个函数。而且这里更可能的是把kk当成类名。kk()自然是kk类的构造函数。这里的var nn=new kk()和var as=new object();是相似的。

function test() {
var tObj = new Object();
tObj.id = 234;
return tObj;

}
var tt = new test();
document.write(tt instanceof Object);//true
document.write(tt instanceof test);//false

上面是实例继承。一般用下面的方法
function test()
{
this.id = 123;
this.name = 'hello world';
this.ff = function(){}
}
var tt = new test();
alert(tt instanceof test);//true
alert(tt.id);//123
tt.ff();

function(){}//在js中,在new()时,可以当成构造函数,也可以当成一个类。 否则就是一个普通函数而已。
在c++中,new()类,得到对象。 JS和它一样的意思。
Object是顶极对象,不是一般类可比,具体我也不清楚。看看’javascript王者归来‘吧

new 后面的是构造函数。

对于 kk() 是个函数,所以 new是正确的。

但是
var k=new s;

语法已经有问题了。
总之,javascript 中 new关键字后面为函数,该函数为对象的构造函数。