javascript函数中的括号()问题



 function t1(){
this.name="dog";
this.age=1;
}


 function t2(){
this.color="red";
}

t1.prototype=new t2();
为什么不是 t1().prototype=new t2();

在这个函数中 t1 t1() 具体指什么啊?
t1 是指这个函数对象? t1() 是执行这个函数?

function 函数 JavaScript

意识模糊的S 9 years, 4 months ago

比如var a=function(){alert(1)};
对于上面这段代码,如果console.log(a);其实返回的是这个函数本身,
如果console.log(a());返回的就是调用这个函数后的结果了

su.ji answered 9 years, 4 months ago

一个是函数引用,一个是函数执行后的的值。


 function demo(){
    console.log('this is demo');
}

demo   ==> 得到demo函数
demo() ==> 得到并执行demo函数 打印 'this is demo'

举个通俗的例子,你去餐厅吃饭,拿到一个小票

小票 就是函数指针
饭 就是函数执行的结果

如果你不拿小票,就取不到饭,但是你光拿着小票不去取饭也是一样不会得到饭。

一粒蛋怒疯 answered 9 years, 4 months ago

想深入这个问题就要去了解原型链了: http://weizhifeng.net/javascript-the-core.html

t1.prototype=new t2(); 是javascript实现继承的一种方式。
t1 是函数对象, t1() 是执行函数,其值是函数返回的值,本题 t1() 返回的是 undefined

构造函数1.prototype = new 构造函数2(); 这句的结果就是,以后通过 new 构造函数1 创建的对象继承了 构造函数2 的相关属性方法。就是这么用的。

只猪走天涯 answered 9 years, 4 months ago

Your Answer